Domanda

Esiste un modo per definire un vincolo generico in Java che sarebbe analogo al seguente constratint generico C #?

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

Sto provando a farlo in questo modo:

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

Ma il compilatore si lamenta della "Classe2" parte: il parametro type non può essere seguito da altri limiti.

È stato utile?

Soluzione

Il modo più semplice che posso vedere per risolvere il codice Java è rendere Class2 un'interfaccia.

Non è possibile vincolare un parametro di tipo per estendere più di una classe o parametro di tipo. Inoltre, non puoi usare super qui.

Altri suggerimenti

Questo codice viene compilato qui bene:

interface Interface1 {}

class Class2 {}

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

Perché è necessario il tipo I quando si assume comunque solo Interfaccia1 ? (non saprai nulla di più nella tua classe su I di quanto non si estenda Interfaccia1 )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top