『壹』 java 介面常量反模式及如何定義 Java 常量
其實 Java 的介面常量是一種反模式,理由如下:
1. 介面是不能阻止被實現或繼承的,也就是說子介面或實現中是能夠覆蓋掉常量的定義,這樣通過父,子介面(或實現) 去引用常量是可能不一致的
2. 同樣的,由於被實現或繼承,造成在繼承樹中可以用大量的介面, 類 或實例去引用 同一個常量,從而造成介面中定義的常量污染了命名空間。(Java 編譯器竟然允許使用實例去引用類變數)
3. 介面暗含的意思是:它是需被實現的,代表著一種類型,它的公有成員是要被暴露的 API。而在介面中定義的常量說不上是 API
『貳』 java中如何定義常量
1、java中使用final和static關鍵字定義常量。首先打開編輯器,編寫代碼。當常量作為一個類的變數時,一定要給它賦值,否則編譯會失敗的。然後定義一個YEAR的常量,用來表示年,一年365天是固定的,這里習慣上大寫,然後賦值為365:
『叄』 如何實現Java介面中定義的常量
介面中的常量會被實現該介面的類繼承並覆蓋,用類名.常量命在main()里調用,常量名本身可以在類的其他方法中直接使用
『肆』 java的介面中為什麼只能定義常量不能定義變數
介面是高一級別的抽象。不能被實例化,所以只能定義常量,默認常量是public static final 的
定義了變數需要實例化,賦值才能使用,跟介面違背
『伍』 Java如何定義常量
java沒有叫全局變數的東西(有全局變數還叫OO嗎?);原因:Java將所有設計都基於對象的基礎上。Java的全局變數只能對一個類內部而言。能夠在類內的任何地方使用的變數就是全局變數,而只在某個特定的函數或者局部的程序塊內使用的變數則是局部變數。
所以:聲明為static的變數實質上就是全局變數。當聲明一個對象時,並不產生static變數的拷貝,而是該類所有的實例變數共用同一個static變數。
使用:java中只有static和非static變數,這個屬於每個類的,如果需要全局變數比如PI(3.14...),可以寫一個類Math,定義static變數PI,調用Math.PI就可以使用了,這樣就達到我們使用全局變數的目的了。
1、將一個 package 中需要的常量集中到一個 XyzConstants 之類的 interface 里聲明,
就像普通的 field 那樣聲明就行了。
復制代碼代碼如下:
public interface SomeConstants {
public intPORT = 80;
public String IP = "166.111.16.1";
public boolean test = true;
}
就可以。
用到常量的類 implements 這個介面 .. 簡單情況這樣就行樂。
2、更 formal 的做法是寫一個類維護所有的常量,負責從配置文件(例如properties文件或xml文件)讀取所有的常量的值。
可以在一個 static {} 塊里從配置文件中初始化所有 static 的變數。 這樣有利於提高軟體的可配置性。改些東東不用動代碼,比較好。
最好要有 config Tool 負責寫配置文件。
3.其他說明:
定義一個公開類,在裡面加static 變數。
復制代碼代碼如下:
public class infos{
private infos(){
}
public static int PORT = 80;
public static String IP = "166.111.166.111";
public static boolean test = true;
public static final String MYNAME="zzz"; //定義中用了final,就是不能改變的。
}
在別的class中調用這些變數就是: infos.PORT,infos.IP,infos.test,infos.MYNAME
多個class交互時可以通過改變這些變數的值來傳遞信息。比如 infos.test被別的class改成了false,可能表示某一件事已經失敗或已經做過,其它class就可以提前知道這些信息。
其中infos.MYNAME被定義為了final,即成為常量。用final修飾的成員變數表示常量,值一旦給定就無法改變!
『陸』 Java中定義常量幾種方式
採用介面(Interface)的中變數默認為static final的特性
在普通類中使用final修飾變數
採用了Java 5.0中引入的Enum類型。,也就是所謂的枚舉類
『柒』 java介面中可以定義常量變數嗎
java介面中的類欄位全部為常量,定義的方法全部為抽象方法。
『捌』 .Java介面中如何定義常量
用final關鍵字
public static final 類型 常量命 = 值
『玖』 在Java介面中怎樣訪問定義的常量
導入介面所在的包,
直接用介面名.常量名即可訪問(如果在同一個包內則不用導入) 實例: (介面中的所有成員域本身都具有public static final屬性,所以寫不寫都沒關系)