클래스를 제네릭 형식 매개 변수로 선언했습니다. 형식 매개 변수가 바운드 형식이기 때문에
public class Box<T> implements Comparable<T> {
@Override
public int compareTo(final T o) {
return 0;
}
}
: 같은
public class Box<T> {
}
되지 않은 :와 동일
public class Box<Comparable> {
}
:이 Comparable 인터페이스를 구현하는 동일하지 않습니다 모든 유형을 허용합니다.
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
를 만들 수 있습니다 이유 때문에 이전 버전과의 호환성이다 : 그래서 당신은 Integer
또는 String
가 사용할 수 있습니다. 새로운 Box
은 원시 타입이 Box<T>
입니다. 나쁜 사례이므로 피해야합니다.
당신은 형식 매개 변수가 Comparable를 구현하는 시행하고 싶었다면 원시 유형 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 { –