4
일반 멤버를 비교할 수있는 java 클래스를 작성하는 데 어려움을 겪고 있습니다.제네릭 클래스 멤버를 비교하는 방법 Java
다음은 내가 작성한 코드 단편이지만 컴파일 오류가 발생합니다.
public class TestClass <E extends Comparable<E>>{
private E data1;
private E data2;
public void fun(){
if(data1 > data2){
}
}
}
compare ('>') 연산이 유효하지 않다는 오류가 발생합니다. 필자는 필자가 Comparable을 확장하는지에 따라이 작업을 수행 할 수 있어야합니다.
감사 ziesemer. 한 가지 의심. 'E extends Integer' 대신'data1> data2'라고 쓰면'E extends Comparable'대신 잘 동작합니다. 정수에 적용 할 수 있기 때문에'> '연산을 허용한다고 가정하고 있습니다. 'Comparable '을 확장하는 동안 동일한 개념을 적용하면 안됩니다. 왜냐하면'> '연산이 모든 비교 가능한 객체에 허용되기 때문입니다. –
shantanu
@shantanu - 단지 그 것이다. '<' and '>'연산자는 Comparable 또는 다른 비 기본 유형 (int, short 등)과 함께 사용할 수 없다. 'Integer' (non-primitive)와 함께 작동하는 유일한 이유는 Java 5의 auto-unboxing 때문입니다. 처음에는 'Integer'를 int로 변환하여 비교를합니다. (그렇지 않으면 위에서와 같이'Integer.compareTo (Integer anotherInteger)'를 사용해야합니다.) – ziesemer
좋은 설명을 해주셔서 고맙습니다. – shantanu