您已經用泛型類型參數聲明瞭該類。這是不一樣的實現可比接口:
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 { –