ArrayList를 확장하고 Comparable 인터페이스를 구현하는 generic 클래스 ComparableList <을 정의하여 ComparableList 유형의 두 객체를 compareTo 메소드를 사용하여 비교할 수 있습니다. compareTo는 사전 식 비교를 수행해야합니다. 다음은 내 코드입니다 :일반적인 comparable 배열 클래스를 정의하는 방법은 무엇입니까?
class ComparableList <T extends Comparable<T>> extends ArrayList implements Comparable<ComparableList>{
@Override
public int compareTo(ComparableList o){
Iterator citer = this.iterator();
Iterator oiter = o.iterator();
while (citer.hasNext() && oiter.hasNext()){
if (citer.next() > oiter.next()){
return 1;
}else if (citer.next() < oiter.next()){
return -1;
}else {
if (!citer.hasNext()){
return -1;
}
if(!oiter.hasNext()){
return 1;
}
}
}
return 0;
}
}
나는이 같은 오류 메시지를 가지고 :
TCL.java:11: error: bad operand types for binary operator '>'
if (citer.next() > oiter.next()){
^
first type: Object
second type: Object
TCL.java:13: error: bad operand types for binary operator '<'
}else if (citer.next() < oiter.next()){
^
first type: Object
second type: Object
나는 그것이 ComparableList 아니라 객체해야한다 생각합니다. 아무도 그 이유를 말해 줄 수 있습니까?
코드를 'Iterator i = iter.next(), o = oiter.next();'로 수정했지만 컴파일러에서'객체를 Iterator로 변환 할 수 없습니다 '라고 표시했습니다. 여전히 ComparableList 유형이 아닌 것 같습니다. – Netjimmy
이유 'iter.next()'가'Iterator'를 리턴 할 것이라고 기대 하시겠습니까? 다음 항목을 반환합니다. 즉, 'T'유형이 있습니다. –
문제가 해결되었습니다. 감사! – Netjimmy