2012-04-01 41 views
9

私はジェネリックスを含むクラスのプロジェクトに取り組んでいます。Javaジェネリックの問題:クラス "型変数の境界内にありません"というエラー。

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の宣言内コースクラスを使用しようと、私は「コースが型変数Kの範囲内ではありません」という内容の型引数エラーが発生します。私はコースがそれを法案に適合しないように欠けているかもしれない属性を理解しようと努力したが、空になった。

アイデア?

答えて

11

MySearchTreeKは、Courseである。だからKは「伸びる」Comparable<Keyable<Course>> & Keyable<Course>でなければなりません。しかし、それはComparable<Keyable<DataElement>> & Keyable<DataElement>を拡張しません。

は私がDataElementComparableまたはEnumと同様に総称化する必要がありますね。

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

うわー、ありがとう。あなたはちょうど頭痛の数時間を節約しました。 – SamWN

関連する問題