2015-04-28 16 views
9

Ho la seguente classe Java con più livelli di ereditarietà con determinati parametri di tipo. Voglio utilizzare il parametro di tipo T in classe B.Ereditarietà a più livelli

class B extends C { 
} 
class C<T extends D> { 
} 
class D { 
} 

Tuttavia, ha seguito non compila:

class B extends C { 
    T t; 
} 
class C<T extends D> { 
} 
class D { 
} 

Anche se posso definire la variabile t in classe C, ma non è una buona pratica di codifica. Come posso definire quanto segue (Anche questo non viene compilato)?

class B extends C<T extends D> { 
} 

Grazie!

+0

"ma non è una buona pratica di codifica" 0o? perché ? – benzonico

+0

Se voglio usare questo t per la classe B, ma ottengo un'altra sottoclasse di classe C, quindi ho bisogno di creare un sacco di variabili t, t2, t3 ... in classe C per tutte le sottoclassi. –

risposta

5

tipo non sono ereditate!

Se si vuole avere la vostra classe B generica, è necessario specificare il proprio parametro Tipo:

class B<T extends D> extends C<T> { 
    T t; 
    ... 
} 

Si noti che è necessario ancora una volta vincolare il parametro type T per averlo estendere D perché è costretto in questo modo nella classe C.

1

Dovrebbe essere: parametri

class B<T extends D> extends C<T> { 
} 
Problemi correlati