У меня есть следующий интерфейс:
public interface Box<T> {
T get();
}
Я хотел бы иметь возможность определить другой интерфейс с параметром Box<SomeType>
, но чтобы этот интерфейс "знал", что такое SomeType
is.
например, я хотел бы определить следующий интерфейс
// this doesn't compile
public interface BiggerBox<B extends Box<H>> {
H get();
}
Идея в том, что вы могли бы сделать что-то вроде этого:
BiggerBox<Box<String>> biggerBox = new SomeBiggerBox(new SomeBox("some string"));
String value = biggerBox.get();
Ближайшая вещь, которую яможно получить:
public interface BiggerBox<B extends Box> {
<U> U get();
}
Но это не обеспечивает безопасность типов во время компиляции.
Я думаю, что это невозможно в Java, но я хотел бы знать, так ли это вообще(даже с помощью безумных хаков).
Редактировать: я не хочу добавлять параметр второго типа в интерфейс, т.е. нет BiggerBox<Box<String>, String>
(поэтому я считаю, что это невозможно)