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