Java-ジェネリック型の使用

r2bd:

この状況でジェネリック型を使用する正しい方法は何ですか?次のコードを検討してください。

public class GTree<T> {
    private int level;
    private T value;
    private String key;
    private LinkedList<GTree<T>> subTrees;
    private GTree<T> parent;

    public class NodeEntry<T extends Comparable<? super T>> implements Comparable<T>{
        private T value;
        private String key;
        
        public NodeEntry(T v, String k) {
            this.value = v;
            this.key = k;
        }
        
        public T getValue() {
            return value;
        }
        
        public String getKey() {
            return key;
        }
        
        public int compareTo(T o) {
             return getValue().compareTo(o);
         }

        public int compareTo(GTree<T>.NodeEntry<T> o) {
            // TODO Auto-generated method stub
            return value.compareTo(o.getValue());
        }
    }

    private void getAllBranches(LinkedList<LinkedList<NodeEntry<T>>> path)
    {
        if(leaf())
        {
            LinkedList<NodeEntry<T>> lastPath = path.getLast();
            NodeEntry<T> p = new NodeEntry<T>(value, key);
            lastPath.addLast(p);
            return;
        }
        else
        {
            LinkedList<NodeEntry<T>> lastPath = path.getLast();
            NodeEntry<T> p = new NodeEntry<T>(value, key);
            lastPath.addLast(p);

            ....

            for(int i = 0; i < subTrees.size(); i++)
            {
                T x = subTrees.get(i).getValue();
                if(subTrees.get(i).leaf())
                {
                    lastPath.addLast(new NodeEntry<T>(subTrees.get(i).getValue(), subTrees.get(i).getKey()));
                    ....
                }
                else
                    subTrees.get(i).getAllBranches(path);
            }
        }
    }
}

コンパイラーは、変数xを定義する場合を除いて、使用するたびにジェネリック型Tについて不平を言っています:境界の不一致:タイプTは、境界パラメーター<T extends Comparable <?タイプGTreeのスーパーT >>。NodeEntry

ジェイソン:

問題はNodeEntryは、特に型であるクラスを探しているということであるTことextends Comparableが、GTreeクラスは、これがバインドされていません。これを解決するには、NodeEntryからバインドされた要件を削除して、上限が設定されたGTreeから型パラメーターTを定義する必要がありますT extends Comparable

NodeEntryがGTreeと同じ値を期待している場合、この特定のケースでは、GTreeの型パラメーターTはComparableにバインドされます。

    public static class GTree<T extends Comparable<T>> {
        
        private int level;
        
        private T value;
        
        private String key;
        
        private LinkedList<GTree<T>> subTrees;
        
        private GTree<T> parent;

        public static class NodeEntry<T extends Comparable<T>> implements Comparable<T> {
            
            private T value;
            
            private String key;

            public NodeEntry(T v, String k) {
                this.value = v;
                this.key = k;
            }

            public T getValue() {
                return value;
            }

            public String getKey() {
                return key;
            }

            @Override
            public int compareTo(T o) {
                return value.compareTo(o);
            }
        }

        private void getAllBranches(LinkedList<LinkedList<NodeEntry<T>>> path) {
            // more
        }
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リスト型のJavaジェネリックの使用法

分類Dev

Javaジェネリック型の消去

分類Dev

列挙型でのJavaジェネリックスの使用

分類Dev

Javaのジェネリック型のジェネリック型?

分類Dev

Javaのジェネリック型を使用します

分類Dev

型変換のためのJavaジェネリック型の使用

分類Dev

Javaのジェネリック型とオブジェクト

分類Dev

Java:型トークンのジェネリック型

分類Dev

Javaジェネリックスのジェネリック型引数

分類Dev

Javaジェネリック。ジェネリック型の配列

分類Dev

Javaのジェネリック型としてジェネリック?

分類Dev

ジェネリック型のJava列挙型

分類Dev

Gsonを使用したジェネリック型のJava逆シリアル化

分類Dev

Javaジェネリックvoid / Void型

分類Dev

Javaジェネリック型

分類Dev

Javaジェネリック型変数

分類Dev

Javaジェネリック-型推論

分類Dev

Java推論ジェネリック型

分類Dev

Javaジェネリック型変換

分類Dev

Java列挙型ジェネリック

分類Dev

Java 戻り型ジェネリック

分類Dev

ジェネリック型とJavaの型としてのインターフェイスの使用の違い

分類Dev

内部クラスのJavaのジェネリック型

分類Dev

java クラス内の複数のジェネリック型

分類Dev

Java-ジェネリックを使用して複数の型を返す

分類Dev

JavaのString.formatでジェネリック型を使用する

分類Dev

JAVA:ジェネリック型クラスの継承とジェネリック型継承

分類Dev

Java:ジェネリック型を別のジェネリック型クラスに渡す

分類Dev

Javaジェネリックメソッドの戻り型

Related 関連記事

  1. 1

    リスト型のJavaジェネリックの使用法

  2. 2

    Javaジェネリック型の消去

  3. 3

    列挙型でのJavaジェネリックスの使用

  4. 4

    Javaのジェネリック型のジェネリック型?

  5. 5

    Javaのジェネリック型を使用します

  6. 6

    型変換のためのJavaジェネリック型の使用

  7. 7

    Javaのジェネリック型とオブジェクト

  8. 8

    Java:型トークンのジェネリック型

  9. 9

    Javaジェネリックスのジェネリック型引数

  10. 10

    Javaジェネリック。ジェネリック型の配列

  11. 11

    Javaのジェネリック型としてジェネリック?

  12. 12

    ジェネリック型のJava列挙型

  13. 13

    Gsonを使用したジェネリック型のJava逆シリアル化

  14. 14

    Javaジェネリックvoid / Void型

  15. 15

    Javaジェネリック型

  16. 16

    Javaジェネリック型変数

  17. 17

    Javaジェネリック-型推論

  18. 18

    Java推論ジェネリック型

  19. 19

    Javaジェネリック型変換

  20. 20

    Java列挙型ジェネリック

  21. 21

    Java 戻り型ジェネリック

  22. 22

    ジェネリック型とJavaの型としてのインターフェイスの使用の違い

  23. 23

    内部クラスのJavaのジェネリック型

  24. 24

    java クラス内の複数のジェネリック型

  25. 25

    Java-ジェネリックを使用して複数の型を返す

  26. 26

    JavaのString.formatでジェネリック型を使用する

  27. 27

    JAVA:ジェネリック型クラスの継承とジェネリック型継承

  28. 28

    Java:ジェネリック型を別のジェネリック型クラスに渡す

  29. 29

    Javaジェネリックメソッドの戻り型

ホットタグ

アーカイブ