2013-07-28 4 views
0

다음 코드가 무엇을하는지 설명해 줄 수 있습니까? 나는 프로그래밍에 초보적이다. "현재 대상"이 의미하는 바를 이해하는 데 어려움을 겪고 있습니다. 이 코드는 Compareable 인터페이스를 구현하는 클래스 내에 포함되어 있습니다. 그것에는 int number와 String description을 취하는 conscutor가있다. 또한 숫자와 설명 모두에 대해 get 메소드를가집니다.Object 클래스의 compareTo 메소드를 오버라이드

@Override 
    public int compareTo (Object o) 
    { 
     Item i = (Item) o; 
     if (this.getNumber() < i.getNumber()) 
      return -1; 
     if (this.getNumber() > i.getNumber()) 
      return 1; 
     return 0; 
+0

정직하게 말하면 "현재 대상"('이')이 무엇인지 모르는 경우 아마 너무 깊숙이 뛰어 들었을 것입니다. Java 교과서 소개를 시작하고 처음부터 시작하십시오. OO 배경을 더 확보하면 더 의미가 있습니다. – DaoWen

답변

3
Item i = (Item) o; 

이 줄은 내가에 저장의 항목 클래스로 O를 수신 객체 를 캐스팅합니다.

if (this.getNumber() < i.getNumber()) 

이 줄은 당신이 에 당신이에서 메소드를 호출하고있는 일을를 수신하고있는 객체가, 특히 자신의 번호 필드를 비교합니다.

return 0; 

이 줄은 이전 조건 중 하나도 충족되지 않은 경우에만 전달됩니다. 이 경우 this.getNumber()가 i.getNumber()와 같을 때 0을 반환합니다.

int x = objectOne.compareTo(objectTwo); 

이 가상 선은 X에 해당하는 반환 값을 할당합니다.

예를 들어, objectOne.getNumber()가 objectTwo.getNumber()보다 작은 경우 x에는 -1 값이 지정됩니다.

0
compareTo()

이 비교 값인지 여부를 나타 내기 위해 int을 반환 더 (1)와 동일한 (0) 또는 (-1) 이하이다. 뭐가 문제 야?

+1

'getNumber'와'()'사이의 공간을 컴파일하면 문제가 발생하지 않아야합니다. – DaoWen

+0

누락 된'}'때문에 컴파일되지 않습니다. – drvdijk

+0

@DaoWen : 당신 말이 맞아요, 왜 이것이 컴파일 오류를 내지 못하는지 당혹 스럽네요. 나는 실제로 그런 식으로 쓰지 않았고 항상 구문 오류라고 가정했다. –

관련 문제