restrição genérica duplo na classe em Java: estende Betão Classe e eu
-
02-07-2019 - |
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
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 )