我聲明瞭以下接口:Java接口領域編制不良修飾符
public interface SQLSyncAble
{
boolean modified = true;
long id = -1;
static HashMap<String,SQLAction> SQLModifiers = new HashMap<String,SQLAction>();
static Field[] SQL_Object_Fields = null;
static DataType[] TransferDataTypes = null;
}
在其他班,在那裏我會像設置其實現此接口的對象,我得到的編譯錯誤:
someobject.id = 10 // The final field SQLSyncAble.id cannot be assigned.
//The static field SQLSyncAble.id should be accessed in a static way.
LOL是什麼? 「id」和「modified」不是「static final」,我讓我們看看編譯過的.class文件(即在Java組件編輯器和eclipse中檢查過),真的!每次(通過eclipse或java無關緊要)在所編譯的類中,所有字段都將具有「static final」修飾符。但爲什麼?
如果我修改此接口爲「抽象類」,問題立即消失。
...但它只是一半的解決方案,java只允許超類之一。
爲什麼遵守我的接口與不受歡迎的修飾符?
隨着顯示的代碼,你可能正在尋找一個抽象類,而不是一個接口。 – GriffeyDog