java中常量定義在interface中好還是定義在class中


Java中interface中定義變量都是"public static final" 類型的, 也就是常量, 因此很多人在interface定義常用的常量,除此之外單獨定義一個class來保存常量也是一個選擇,對於這兩種方式哪一種好呢?

下面是功能等同的兩種定義常量的方式: 

public final class Constants { private Constants() {} public static final Integer TIME_OUT = 1000; }
public interface Constants { Integer TIME_OUT = 1000; }

類定義常量和接口定義常量: 

1.類定義常量, 需要定義成final且定義一個private的構造方法, 這樣做是為了不讓其他類繼承, 禁止實例化此類, 

調用時直接以"類.常量"的方式調用. 

2.接口中定義的"變量", 其實就是常量, 接口中的"變量"默認都是 "public static final"類型, 即為常量, 

因此接口可以省略"public static final"而直接寫成 "type variable".

3.用如上的類定義常量, 不能實例化也不能被繼承, 看起了完美無缺; 

4.接口定義常量, 雖不能實例化, 確可以被其他類實現;

因此有這么一種設計模式"The constant interface pattern". 所謂的"常量接口模式",  就是其他類要使用接口中定義的常量, 

就實現該接口. 我認為這是對接口的爛用. 接口中定義的常量應為所有類頻繁使用的常量, 但並不是每個類都使用了接口中定義的所有常量, 

因而導入了不必要的常量到這個類中, 並且導入后這個類的子類也會基礎導入的常量, 這樣會導致混亂, 應當避免此種用法.

5.在interface和class中定義相同的常量, interface生成的class文件比class生成的class文件會更小, 而且更簡潔, 效率更高

所以我更喜歡把常量定義在接口中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM