Расширение и T и SomeInterface <T> в Java

Я хочу создать класс, который берет два параметра. Нужно быть введен просто как T. Другой должен быть введен как что-то, что расширяет и T и SomeInterface<T>. Когда я делаю попытку этого с

public class SomeClass<T, S extends SomeInterface<T> & T>

затем Java жалуется с

"Тип T не является интерфейсом; это не может быть указано как ограниченный параметр"

и если вместо этого я пытаюсь создать интерфейс для S с

public interface TandSomeInterface<T> extends SomeInterface<T>, T

затем Java жалуется с

"Не может относиться к параметру типа T как супертип"

Там какой-либо путь состоит в том, чтобы сделать это в Java? Я думаю, что можно сделать это в C++...?

8
задан Graeme Moss 30 March 2010 в 08:10
поделиться

2 ответа

Невозможно создать интерфейс, расширяющий параметр типа T , поскольку нет контракта, который бы гарантировал T интерфейсом. И, конечно же, интерфейс, расширяющий класс, не допускается.

3
ответ дан 5 December 2019 в 22:17
поделиться

это работает, если вы также расширяете интерфейс:

public class SomeClass<T extends I, S extends SomeInterface<T> & I>

но, возможно, это не совсем то, что вам нужно ...

3
ответ дан 5 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: