Рассмотрим следующие два файла Java, которые содержат упрощенную версию моей проблемы
#a.java
package a;
public interface I {
//...
}
#b.java
package b;
public interface I {
//... (different stuff from a.I)
}
Вы заметите, что в моем проекте есть два интерфейса с именем "I". Это не может быть изменено.
Я нахожусь в ситуации, когда мне нужно использовать оба типа внутри одного класса. Теперь, конечно, я мог бы просто ссылаться на каждый из их типов как a.I и b.I, но я пытаюсь избежать этого ни для чего иного, как для поддержания читаемости.
Я хочу сделать что-то подобное
interface B extends b.I {
}
Это могло бы позволить мне использовать интерфейс I с помощью B и, и a.I как только я, импортируя. Проблема в том, что это не работает, давайте возьмем этот конкретный пример, используя
interface MyList extends List<String> {
}
MyList l = new ArrayList<String>();
Это приводит к ошибке типа. Почему Java «не знает», что MyList расширяет List?
Кроме того, я пробовал приведение в приведенном выше примере, но оно генерирует ClassCastException
Мысли