Как бы я создал объект с этими обобщениями в Java? (<T расширяет KeyedItem <KT>, KT расширяет Comparable <? Super KT >>) - PullRequest
0 голосов
/ 30 апреля 2018

Вот классы, которые я использую ...

public class MyBinarySearchTreePlus<T extends KeyedItem<KT>, KT extends Comparable<? super KT>>
        extends MyBinarySearchTree<T, KT> implements BSTPInterface<T, KT> {
    public MyBinarySearchTreePlus() {
        super();
    }
}

.

public class MyBinarySearchTree<T extends KeyedItem<KT>, KT extends Comparable<? super KT>>
            extends BinaryTreeBasis<T> {

    public MyBinarySearchTree() {}
}  

.

public abstract class BinaryTreeBasis<T> {
    protected TreeNode<T> root;

    public BinaryTreeBasis() {
      root = null;
    }
}

.

public abstract class KeyedItem<KT extends
                                 Comparable<? super KT>> {
    private KT searchKey;

    public KeyedItem(KT key) {
        searchKey = key;
    }
}

Ничто из того, что я пытаюсь создать, не создаст BinarySearchTree, я пытаюсь:

MyBinarySearchTreePlus<Integer, Integer> tree = new MyBinarySearchTreePlus<Integer, Integer>();

Я всегда получаю ошибку (исходя из первого параметра):

Bound mismatch: The type Integer is not a valid substitute for the bounded 
parameter <T extends KeyedItem<KT>> of the type MyBinarySearchTreePlus<T,KT>

Какой тип объекта ищет T extends KeyedItem? Он не компилируется с сопоставимыми объектами, несопоставимыми объектами, примитивными объектами. Так что именно я должен использовать здесь? Я не понимаю, почему на первом месте даже 2, очевидно, 1 - это тип, который вы храните в дереве, а какой другой - 1? У меня также есть класс TreeNode типа T, если это имеет какое-либо значение.

...