泛型类的新对象的绑定不匹配

时间:2014-06-26 08:28:29

标签: java generics

我在分配程序时遇到错误。在其中,我必须创建一个自己的通用

public class LinkedList<E extends Comparable<T>> implements List<E> {

实现的接口是:

public interface List<E extends Comparable<T>> { }

现在,每当我尝试按如下方式创建LinkedList类型的新对象时:

LinkedList<Termin> k = new LinkedList<Termin>();

eclipse给了我以下错误:

  
      
  • 绑定不匹配:类型Termin不是有界参数的有效替代&gt;类型的   链表
  •   

类Termin的类声明如下:

public class Termin implements Comparable<T> { }

如果您需要LinkedList对象的构造函数和变量:

    private E item;
    private LinkedList<E> next;

//Constructor
    public LinkedList() {
        item = null;
        next = null;
    }

通过一点谷歌魔术,我还发现曾经有一个涉及eclipse中泛型的错误,无缘无故地给出了同样的错误。

我想我的一些声明并不完全正确。

1 个答案:

答案 0 :(得分:3)

编写代码的方式,由于多种原因无法编译,包括缺少T类型的规范,但未明确声明。

一种解决方案是删除T并将其替换为已知的Java类型(例如Object)。

更通用的解决方案是包含T,这意味着必须使用两种通用类型。

对于后一种情况,代码可能类似于:

// LinkedList class
public class LinkedList<T, E extends Comparable<T>> implements List<T, E> {
    private E item;
    private LinkedList<T, E> next;

    // Constructor
    public LinkedList() {
        item = null;
        next = null;
    }

    public static void main(String[] args) {
        // Example statement, where T = Long.class and E = String.class
        LinkedList<Long, Termin<String>> k = new LinkedList<Long, Termin<String>>();
    }
}

// List interface    
public interface List<T, E extends Comparable<T>> { }

// Termin class
public class Termin<T> implements Comparable<T> {
    @Override
    public int compareTo(T o) {
        return 0; // Actual comparison needs to be implemented
    }
}