Попробуйте этот путь: удалите все .class файлы в ваших каталогах проектов (и, конечно же, все подкаталоги). Rebuild.
Иногда mvn clean
(если вы используете maven) не очищает файлы .class, созданные вручную javac
. И эти старые файлы содержат старые подписи, что приводит к NoSuchMethodError
.
Заключительный класс только с частными конструкторами является дизайном, используемым одиночными элементами и мультитоннами.
абстрактный класс, который имеет только частных конструкторов, является единственным способом, которым я видел, чтобы препятствовать тому, чтобы класс был инстанцирован. Я видел, что это раньше создавало служебные классы (которые только имеют статические методы и/или участников).
Что касается установки пользовательских ожиданий я вижу, что https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html состояния "Абстрактные классы нельзя инстанцировать, но они могут быть разделены на подклассы". Я отмечаю, что это не указывает намерения, что они, как ожидают, будут разделены на подклассы.
я также отмечаю однако, что, просматривая некоторый исходный код Java нахожу, что следующие проекты используются (ни один из которых не является абстрактными классами только с частными конструкторами):