Pergunta

Existe uma maneira para definir uma restrição genérica em Java que seria análoga à seguinte C # constratint genérico?

class Class1<I,T> where I : Interface1, Class2 : I

Eu estou tentando fazê-lo como este:

class Class1<I extends Interface1, T extends I & Class2>

Mas o compilador reclama sobre a parte "Class2":. Parâmetro Tipo não pode ser seguido por outros limites

Foi útil?

Solução

A maneira mais simples que eu posso ver de resolver o código Java é fazer Class2 uma interface.

Você não pode restringir um tipo de parâmetro para se estende mais de um parâmetro classe ou espécie. Além disso, você não pode usar super aqui.

Outras dicas

Este código compila aqui muito bem:

interface Interface1 {}

class Class2 {}

class Class1<I extends Interface1, T extends Class2 & Interface1> {}

Por que você precisa da I digite lá quando você assumir apenas Interface1 de qualquer maneira? (Você não vai saber algo mais em sua classe sobre I do que estende Interface1 )

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top