Действительно ли возможно сослаться на вложенный универсальный параметр в Java?

Я склонен ставить C / C ++ в своих вопросах.

Как правило, я ищу что-то, что я могу использовать в своем приложении c ++.

Если код написан на C или C ++, я могу его использовать, поэтому я бы предпочел не просто ограничивать возможные ответы одним или другим.

14
задан Yishai 24 August 2009 в 23:54
поделиться

5 ответов

public interface SomeRelatedInterface<T> {  
    T doSomethingRelated(SomeInterface<T> relative);
}
2
ответ дан 1 December 2019 в 16:39
поделиться

Поскольку параметры типа стираются во время компиляции, ИМХО вы, к сожалению, не можете достичь того, чего хотите, не указав T в качестве второго параметра типа, как вы это делали в первом примере.

0
ответ дан 1 December 2019 в 16:39
поделиться

Посмотрите, подходит ли это вам:

public interface SomeRelatedInterface<T> {
     public  <D extends SomeInterface<T>> T doSomethingRelated(D relative);
}
0
ответ дан 1 December 2019 в 16:39
поделиться

Ну, я назначил награду по этому вопросу и не знал, что поведение SO заключалось в том, чтобы дать кому-то ответ (поздравляю, Дэниел), я думал, что представитель останется без награды, и я потеряю его. Ладно.

В общем, наконец-то я получил ответ. Из здесь :

К сожалению, в целях обратной совместимости new Map () указывает на необработанный тип и поэтому не может использоваться для вывода типа.

Так что в основном при создании класса и передаче в параметре типа вывод типа был отключен, чтобы оставить место для необработанного типа.

1
ответ дан 1 December 2019 в 16:39
поделиться

«На этом этапе я ищу по этому вопросу причину, по которой язык требует этого дублирования»

Ну, язык требует, чтобы вы определяли 2 параметра типа в вашем примере, потому что в описываемой вами задаче есть, гм, 2 параметра типа: вы хотите, чтобы метод был переменным как в типе T , так и в в реализации SomeInterface .

Это ортогональные соображения и, следовательно, вам нужно более одного параметра типа для их представления.

Параметры типа, конечно, не нужно определять в классе / интерфейсе; их можно определить по методу. Ответ J-16 SDiZ позволяет соответствующему классу / интерфейсу иметь только один параметр типа. Затем параметр второго типа объявляется только там, где он необходим,

2
ответ дан 1 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

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