我在分配程序时遇到错误。在其中,我必须创建一个自己的通用
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中泛型的错误,无缘无故地给出了同样的错误。
我想我的一些声明并不完全正确。
答案 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
}
}