Нам нужно закрыть соединение, когда объект вытесняется (истекает время ожидания) из кеша. Пытаясь создать CacheEventListener для ehcache (версия 2.10.4), мы получаем:
The inherited method Object.clone() cannot hide the public abstract method in CacheEventListener
Это можно обойти? Как это может работать ?! Есть ли альтернатива?
Если вы создадите класс, реализующий CacheEventListener, вы получите указанную выше ошибку. «Сеть» говорит, что ее нельзя обойти.
А как насчет расширения CacheEventListenerAdapter? Ах, похоже, проблема с компилятором. Так разве они не исправили это в EhCache? В конце концов, это их вина (или, по крайней мере, они единственные, кто может что-то с этим поделать). Хм, позволь мне кое-что попробовать.
Думаю, я понял. Я переопределил «клон» в своем классе. Кажется, работает, но это очень странная ошибка.
Связанные stackoverflow.com/questions/6837362/…
Да, видел это. Это чуть ли не единственное, что есть в сети об этой проблеме. Из-за этого мы почти перешли на кофеин.




Итак, проблема в том, что Object.clone() - это protected, и поэтому любой интерфейс, объявляющий общедоступный clone(), не будет принимать Object.clone() как реализацию.
Как я и предполагал, либо реализация public clone() самостоятельно, либо расширение адаптера (который, конечно же, реализует все) решат эту проблему.
Связанное сообщение Унаследованный метод Object.clone () не может скрыть общедоступный абстрактный метод, кажется, идет глубже и неразрешимо, но, поскольку здесь нет типов пересечений, это лишь небольшое раздражение.
То, что они говорят о clone(), правда, не делайте этого.
Как вы получили эту ошибку? Что ты пытался сделать?