У меня есть следующий тестовый код:
public interface Container<I> {
public void addClass(Class<?> clazz);
}
public class MyContainer implements Container {
public void addClass(Class<?> clazz) {}
}
и я получаю следующую ошибку при попытке скомпилировать эти два класса:
MyContainer.java: 1: MyContainer не является абстрактным и не перекрывает абстрактный метод addClass (java.lang.Class) в контейнере
Если я добавлю тип в интерфейс контейнера в MyContainer (например, <Object>
), я не получу сообщение об ошибке.
Проблема в том, что я ввожу параметр типа в Container, который является частью общедоступного API, поэтому для совместимости я не могу иметь все реализующие классы, которые не могут компилироваться.
У кого-нибудь есть идеи? Это проблема стирания типа? Есть ли обходной путь?