2012-04-01 21 views
9

Ben jenerik içeren sınıf için bir proje üzerinde çalışıyorum.Java genericics issue: Sınıf "type-variable sınırları içinde değil" hatası.

public interface Keyable <T> {public String getKey();} 

public interface DataElement extends Comparable<Keyable<DataElement>>, Keyable<DataElement>, Serializable {...} 
public class Course implements DataElement {...} 


public interface SearchTree<K extends Comparable<Keyable<K>> & Keyable<K>> extends Serializable {...} 
public class MySearchTree implements SearchTree<Course> { 
... 
    private class Node { 
     public Course data; 
     public Node left; 
     public Node right; 
     ... 
    } 
} 

MySearchTree ilanından dahilinde Ders sınıfını kullanmaya çalışıyor, ben "Ders tip-değişken K sınırları içinde olmadığını" belirten bir tip argüman hatası alırsınız. Faturaya uymaması için Kursun hangi özelliklerin eksik olabileceğini anlamaya çalışırken çok fazla zaman harcadım, ama boş çıktım.

Herhangi bir fikrin var mı?

cevap

11

MySearchTree'da, taban türünün K numarası Course'dir. Yani K, Comparable<Keyable<Course>> & Keyable<Course> "uzatması" gerekir. Ama öyle değil, Comparable<Keyable<DataElement>> & Keyable<DataElement>.

Ben DataElementComparable veya Enumbenzer şekilde Generified gerektiğini sanırım.

public interface Keyable <T> {public String getKey();} 

public interface DataElement<THIS extends DataElement<THIS>> extends Comparable<Keyable<THIS>>, Keyable<THIS>, Serializable {...} 
public class Course implements DataElement<Course> {...} 


public interface SearchTree<K extends Comparable<Keyable<K>> & Keyable<K>> extends Serializable {...} 
public class MySearchTree implements SearchTree<Course> { 
+1

Vay, bir ton teşekkürler. Sadece saatlerce baş ağrısını kurtardın. – SamWN