您已经用泛型类型参数声明了该类。这是不一样的实现可比接口:
public class Box<Comparable> {
}
是一样的:因为类型参数是无界的
public class Box<T> implements Comparable<T> {
@Override
public int compareTo(final T o) {
return 0;
}
}
:
public class Box<T> {
}
这是不一样的,它会接受任何类型。所以,你可以使用一个Integer
或String
:
public class Box<T> {
public static void main(String[] args) {
Box a = new Box();
Box b = new Box<>();
Box c = new Box<Integer>();
Box d = new Box<String>();
}
}
为什么你可以不指定类型创建一个新的Box
的原因是因为向后兼容性。新的Box
将具有原始类型Box<T>
。这是不好的做法应该避免。
你可以阅读更多关于RAW类型here
如果要强制类型参数实现可比,那么你可以做:
import java.awt.*;
public class Box<T extends Comparable<T>> {
public static void main(String[] args) {
Box a = new Box();
Box b = new Box<>();
Box c = new Box<Integer>();
Box d = new Box<String>();
// This one will not work as Rectangle does not implement Comparable!
Box e = new Box<Rectangle>();
}
}
请提供更多关于您试图达到的内容的信息。目前,它可能有多个解释你的问题。请阅读:http://stackoverflow.com/help/how-to-ask –
我认为你正在尝试实现如下:class Box { –