Почему интерфейсы не могут быть объявлены как статические?Java - интерфейсы
ответ
Во-первых, потому что это не имеет смысла. Как статический интерфейс будет отличаться от нестатического интерфейса?
Во-вторых, они могут:
public class SomeClass {
static interface StaticInterface {
}
}
Think интерфейса, как план. это ничего конкретного. Просто схема того, что класс должен реализовать, если придерживается (наследует) интерфейс.
Java (iirc) не имеет понятия «статические» классы как такового, то есть «Static» не является ключевым словом в объявлении класса, как в C#. Вместо этого статический класс - это класс, состоящий только из статических элементов и методов.
Как вы знаете, статические элементы и статические методы относятся к классу, а не к экземпляру.
Поскольку интерфейс - это просто проект, а не конкретный, «статический» интерфейс не имеет смысла.
Остерегайтесь этого внутреннего класса.
В объявлении класса вы можете определить интерфейс, который является статическим, но я предполагаю, что он ничего не делает.
Если вы имеете в виду сам интерфейс: Потому что на самом деле не что-нибудь полезное вы могли бы означать с static interface
Если вы имеете в виду интерфейсу методы: Поскольку в Java, статические методы являются собственностью класса и не может переопределяться или вызываться полиморфно.
Actualy, я вижу смысл в интерфейсах, которые не могут быть реализованы (особенно до перечислений были введены в Java 5):
public static (or better final?) interface Colors {
public final int RED = 1;
public final int GREEN = 2;
...
}
Если кто-то знает, почему эти вещи не должно быть сделано таким образом (предположим мы все еще в java_1.4), пожалуйста, оставляйте комментарии.
Я думаю, что интерфейсы больше касаются поведения, а не данных. Если нет перечислений, я бы переместил эти (статические) данные в класс. – spa
Это «Постоянный интерфейс против шаблона». – whiskeysierra
Это на самом деле называется постоянным интерфейсом antipattern (см. Википедию для справки). Альтернативой является использование конкретного класса (частный конструктор). – helpermethod
- 1. Java-интерфейсы
- 2. Java общие интерфейсы
- 3. Интерфейсы Java - параметрический полиморфизм
- 4. Generics + Интерфейсы в Java
- 5. Java Интерфейсы начинающих
- 6. интерфейсы в Java
- 7. Установить интерфейсы в Java
- 8. Java и «общие» интерфейсы
- 9. Интерфейсы в Java 8
- 10. Java runnable и интерфейсы
- 11. Java - реализующие интерфейсы
- 12. Java - понимание интерфейсы
- 13. Интерфейсы Java: ошибка компилятора
- 14. Интерфейсы: Спецификация языка Java
- 15. Java - интерфейсы и методы
- 16. Литейные интерфейсы в java
- 17. Java Дженерики и интерфейсы
- 18. Интерфейсы в Java
- 19. Java: различные интерфейсы дженериков
- 20. Java-абстракция и интерфейсы
- 21. Java overriding и интерфейсы
- 22. Java Embedded Статические интерфейсы
- 23. Java: интерфейсы и шаблоны
- 24. Интерфейсы Spring и Java
- 25. Java интерфейсы, объявляя интерфейс
- 26. Почему нужны интерфейсы Java?
- 27. Интерфейсы и реализация Java
- 28. Разработал ли Java интерфейсы?
- 29. Java Интерфейсы и наследование
- 30. Интерфейсы и классы JAVA
+1 Хорошее объяснение. Но что вы подразумеваете под «Я предполагаю, что это ничего не делает»? – helpermethod