【问题标题】:JAVA : Bound mismatch: is not a valid substitute for the bounded parameter <E extends Comparable<E>>JAVA : Bound mismatch: 不是有界参数 <E extends Comparable<E>> 的有效替代品
【发布时间】:2016-01-12 07:07:53
【问题描述】:

我有类 BinaryTree:

    public class BinaryTree<E extends Comparable<E>> extends AbstractTree<E> {
        protected TreeNode<E> root;
        protected int size = 0;
        private final Comparator<? super E> comparator;

        /** Create a default binary tree */
        public BinaryTree() {
            comparator = null;
        }
/** Create a binary tree from an array of objects */
    public BinaryTree(E[] objects) {
        for (int i = 0; i < objects.length; i++)
            insert(objects[i]);
    }
    public BinaryTree(E[] objects, Comparator<E> c) {
        for (int i = 0; i < objects.length; i++)
            insert(objects[i]);
        }
    //some getters, setters, insert, search and etc...
}

我还有 MyQueue 类:

public class MyQueue<E> {
    private LinkedList<E> list = new LinkedList<E>();

    public void enqueue(E e) {
        list.addLast(e);
    }

    public E dequeue() {
        return list.removeFirst();
    }

    public int getSize() {
        return list.size();
    }

    public String toString() {
        return "Queue: " + list.toString();
    }
}

最后我有了 CreditCardTransaction 类:

public class CreditCardTransaction {
    private int cardNumber;
    private String customerName;
    private int amount;

    public CreditCardTransaction(int cardNumber, String customerName, int amount) {
        this.cardNumber = cardNumber;
        this.customerName = customerName;
        this.amount = amount;
    }

    public int getCardNumber() {
        return cardNumber;
    }

    public void setCardNumber(int cardNumber) {
        this.cardNumber = cardNumber;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public int getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }
}

我主要写了:

BinaryTree<MyQueue<CreditCardTransaction>> e = new BinaryTree<MyQueue<CreditCardTransaction>>();

我得到了错误:

Bound mismatch: The type MyQueue<CreditCardTransaction> is not a valid substitute for the bounded parameter <E extends Comparable<E>> of the type BinaryTree<E>

我尝试了各种类型的混合,任何时候 eclipse 给我这个错误,请帮忙?

编辑

我已添加到 MyQueue

public class MyQueue<E> implements Comparable<E>{
@Override
    public int compareTo(E o) {
        // TODO Auto-generated method stub
        return 0;
    }
}

它仍然给了我错误:

Bound mismatch: The type MyQueue<CreditCardTransaction> is not a valid
substitute for the bounded parameter <E extends Comparable<E>> of the
type BinaryTree<E>

【问题讨论】:

    标签: java generics collections tree binary-tree


    【解决方案1】:

    MyQueue没有实现Comparable,所以不能替代BinaryTree的类型参数。

    如果不需要,您可以从BinaryTree 中删除绑定的extends Comparable&lt;E&gt;,或者更改MyQueue 以实现Comparable&lt;MyQueue&lt;E&gt;&gt;

    【讨论】:

    • 我尝试实现 Comparable to MyQueue 但它仍然给我同样的错误@Eran
    • @ShayZambrovski 请将相关代码添加到您的问题中。
    • @ShayZambrovski 这并不能解决您的问题,因为 MyQueue&lt;E&gt; 应该实现 Comparable&lt;MyQueue&lt;E&gt;&gt; 以匹配 BinaryTree 类型参数,而不是 Comparable&lt;E&gt;
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多