Я знаю, что это не рекомендуется, но почему я могу объявить переменную-член интерфейса не статической?Java - нестационарная переменная-член интерфейса
А в чем разница между статическим и нестационарным элементом интерфейса? Я вижу, что если я определяю переменный элемент интерфейса как статический, я могу использовать его в реализующем классе в не статическом виде:
Интерфейс:
public interface Pinuz {
final static int a;
public void method1();
}
Реализация класс:
public class Test implements Pinuz {
public static void main(String[] args) {
Test t = new Test();
int b = t.a;
}
@Override
public void method1() {
// TODO Auto-generated method stub
}
}
Я вижу только предупреждение с просьбой использовать элемент a статическим способом.
Не уверен, что вы имеете в виду. Все переменные в интерфейсе неявно статичны. – Thilo
Интерфейсы могут иметь только статический член _variables_. Сигнатуры методов обычно нестатические, потому что они должны быть реализованы (на Java 8 существуют статические реализации по умолчанию, но это скорее особый случай). – Thomas