2015-04-28 30 views
9

Belirli tip parametrelerine sahip birden fazla kalıtım seviyesine sahip aşağıdaki Java sınıfına sahibim. O derleme Aşağıdakiler,Çoklu Kalıtım Seviyesi

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

Ancak sınıf B'de tür parametresi T kullanımı istiyorum:

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

Sınıf C değişken t tanımlar, ancak ama değil iyi bir kodlama uygulaması. Aşağıdakileri nasıl tanımlayabilirim (Bu da derleme değil)?

class B extends C<T extends D> { 
} 

Teşekkürler!

+0

"İyi bir kodlama uygulaması değil" 0o? niye ya ? – benzonico

+0

Eğer bu B sınıfı B için kullanmak istersem, fakat C sınıfının başka bir alt sınıfını elde edersem, tüm alt sınıflar için C sınıfında çok fazla değişken t, t2, t3 ... yaratmam gerekir. –

cevap

5

Tipi parametreleri miras değil!

Eğer sınıf B jenerik, sen kendi türü parametresi belirtmelidir sahip olmak istiyorsanız: bu şekilde kısıtlandığı için tekrar türü parametresi T sınırlamak gerekir

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

Not onu D uzanan olması C sınıfında.

1

Olmalıdır:

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