я объявил следующий интерфейс: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» не является «статическим окончанием», я могу увидеть скомпилированный файл .class (im проверен в редакторе Java-сборки и в eclipse) и действительно! Каждый раз (неважно, по eclipse или java) int в соответствующем классе все поля будут иметь модификатор «static final». Но почему?
Если я изменяю этот интерфейс на «абстрактный класс», проблема мгновенно исчезает.
... Но это только половина решения, java допускает только один из суперкласса.
Зачем мой интерфейс с нежелательными модификаторами?
С приведенным кодом вы можете искать абстрактный класс, а не интерфейс. – GriffeyDog