Я задавался вопросом, можно ли вызвать из POJO метод oneton bean-компонента через его интерфейс. Возможно, эта идея неправильная или архитектура ... но это то, что я хотел бы сделать, если это возможно, потому что это архитектура проекта. Я замечаю, что когда я вызываю getInstance() (метод из интерфейса singleton) из POJO, возникает ошибка, говорящая мне, что метод должен быть статическим, но если я сделаю метод статическим, тогда я должен написать реализацию в интерфейсе, и я не могу получить экземпляр singleton.Как вызвать метод singleton из Java POJO?
ответ
Ваш текущий подход с интерфейсом является ошибочным. По умолчанию все методы в интерфейсе (вплоть до Java 8) являются статическими и реализуются методами экземпляра в классе реализации.
Это означает, что это не вариант. В конце концов, вам нужно запустить метод для создания экземпляра, то есть у вас пока нет экземпляра, так что у вас нет экземпляра для его вызова.
Внесение того же статического метода в абстрактный класс, который вы расширяете, также не является решением: суперкласс никогда не должен знать о его подклассах. Если это статический метод (который он должен быть), вам нужно сохранить его в самом классе: статический метод в абстрактном классе может (посредством анонимной реализации абстрактного класса) возвращать экземпляр абстрактного класса, но это не то же самое, что и экземпляр подкласса, и это то, что вы ищете.
Чтобы использовать этот метод для подкласса, вам необходимо наследовать его из суперкласса. Но он все равно вернет экземпляр суперкласса. Вам нужно будет перезаписать метод в подклассе правильным, поэтому лучшим решением будет добавить его прямо в ваш класс Singleton.
Идея кажется неправильной. Статический метод всегда находится на уровне класса, и поэтому вы никогда не сможете объявить метод статическим в интерфейсе Java (это можно сделать в Java 8). Однако это похоже на неправильный дизайн. Если вы действительно хотите сделать что-то вроде этого -
1)Make the Interface an abstract class.
2)Create a static method called getInstance();
3)Extend the abstract class in your POJO singleton class.
Надеюсь, что это поможет!
, так как он должен был бы перезаписать (вы не можете переопределить статические члены) метод, чтобы вернуть экземпляр самого класса, какова точка этого? Наличие абстрактного класса в этой ситуации бессмысленно. Все, что ему нужно, это один статический метод в самом классе. – Stultuske
Абстрактный класс не только для статического метода. В настоящее время он имеет интерфейс, который будет содержать несколько сигнатур методов, которые класс, реализующий этот интерфейс, должен переопределить. Он может все еще иметь все те, что в этом абстрактном классе, и использовать статический метод. P.S - Этот ответ заключается только в том, что он хочет сделать это таким образом, в идеале он должен иметь статический метод в одиночном классе – Pratik
В идеале он должен быть там, точка.суперкласс не знает о существовании подклассов, поэтому абстрактный класс вернет экземпляр ... что, собственно? он не может вернуть один из себя, если он не является анонимным, и он не может логически вернуть экземпляр класса, который ему нужен. В любом случае, вы его включаете, он все еще нуждается в этом статическом методе в своем одиночном классе. – Stultuske
Вам не разрешено иметь статические методы в ваших интерфейсах (по крайней мере, до Java 8). Что-то вроде этого недопустимо:
MyInterface var = new MyImplementingClass();
var.staticMethod();
Просто удалите интерфейс и вызовите статический метод против класса, в котором находится статический метод.
Поиск по singleton pattern - «стандартный» способ сделать это включает в себя классы, а не интерфейсы, поэтому переосмыслите свой дизайн.
'' стандартный способ сделать это включает в себя классы или перечисления – CKing
- 1. Как вызвать метод java
- 2. Вызвать метод Java из JSNI
- 3. Как вызвать completeHandler из класса Singleton?
- 4. Как вызвать метод python из класса java?
- 5. Как вызвать статический метод Java из Gradle
- 6. как вызвать метод java из actionscript
- 7. Как вызвать метод из определенного потока Java
- 8. Как вызвать метод фрагмента из класса java?
- 9. Как вызвать java-метод из JSP?
- 10. Как вызвать метод Java из C++
- 11. Как вызвать метод из параметра JAVA
- 12. Java, как вызвать метод из основного метода
- 13. Как вызвать метод Java из Perl6
- 14. Как вызвать метод Java из яваскрипта адаптера
- 15. Как вызвать метод в java?
- 16. [JAVA] Как вызвать метод «itemStateChanged»
- 17. Базовая Java: Как вызвать метод?
- 18. PHP Как вызвать метод из расширенного класса
- 19. Как вызвать метод из родительского контейнера
- 20. Вызвать метод из действий
- 21. Как назвать метод singleton?
- 22. Вызвать метод класса из переменной java
- 23. Как создать java pojo
- 24. Вызвать метод java из RPGLE (as400)
- 25. Невозможно вызвать метод из другого класса [Java]
- 26. Невозможно вызвать метод из другого класса JAVA
- 27. Вызвать метод java из документа Microsoft docx
- 28. Вызвать любой Java-метод из C#
- 29. Вызвать Java-метод из JSP-файла напрямую
- 30. Как вызвать метод из основного?
Удалите интерфейс и сделайте метод статическим. Вы не можете вызвать метод экземпляра, прежде чем у вас будет фактический экземпляр для его вызова, и вы не хотите называть его экземпляром. – Stultuske