2011-09-19 2 views
-2

클래스 Mammal을 확장하는 클래스 Mouse이 있습니다. Mouse에서, I는 다음과 같이 매개 변수로 ArrayListMouse의 오브젝트에 걸리는 정적 메소드를 가지고하위 클래스 정적 메서드에서 수퍼 클래스 메서드를 호출 할 때 문제가 발생했습니다.

if((mice.get(i).getIsMale^mice.get(j).getIsMale) && (mice.get(i).getAge > 1) && (mice.get(j).getAge > 1)) 
    //if either mouse is male but not both and if both are older than 1 day 

getIsMale :

이 정적 메소드 내부
public static void mate(ArrayList<Mouse> mice) 

, I는이 코드 라인을 가지고 getAge은 슈퍼 클래스 Mammal에 정의 된 메소드이고 ij은 정적 인 mate 메소드 내부에서 사용하는 변수입니다.

컴파일러에서 위의 줄에 4 개의 오류가 표시됩니다. 기호를 찾을 수 없습니다. getIsMale 하나당 하나씩 getAge

(빠른) 도움 주시면 감사하겠습니다. 나는이 과제를 제출하고 잠을 자야한다. 감사!

답변

2

빠른 답변 (:-P) : 대괄호를 추가하여 getIsMale()getAge()이되도록해야합니다. 모든 함수는 Java에서 대괄호로 호출해야합니다.

스타일의 코멘트는 : 부울 게터는 일반적으로 그래서 당신의 male 게터가 getIsMale, isMale을하지 이름을 지정해야하지 getXXXisXXX을 지정해야합니다.

2

여기에 코드입니다 :이 기록 된 것을

if ((mice.get(i).getIsMale^mice.get(j).getIsMale) && 
    (mice.get(i).getAge > 1) && 
    (mice.get(j).getAge > 1)) { 
    // ... 
} 

방법, 당신은 너무에와 "나에게 필드 getIsMale의 값을 제공합니다"라고되어 있습니다. getAgegetIsMale은 필드가 아니며 메소드입니다. 그래서 당신은 그 전화에 있습니다. 오히려 "그 필드"가 아닌 자바 컴파일러는 말한다 "기호를 찾을 수 없습니다"라는

if ((mice.get(i).getIsMale()^mice.get(j).getIsMale()) && 
    (mice.get(i).getAge() > 1) && 
    (mice.get(j).getAge() > 1)) { 
    // ... 
} 

(그 이유는 해당 필드 이름과 메소드 이름입니다

가 다른 이름 공간에있는 경우 예를 들어 foo이라는 필드와 foo이라는 메서드가있는 클래스를 작성할 수 있습니다 ... 컴파일러는 실제로 무엇을 의미하는지 짐작하기보다는 오류를 알려줍니다.)


사소한 점 : JavaBeans 규칙에 따르면 getter f 부울 속성은 getXxx이 아닌 isXxx이라고 지정해야합니다. getIsMale()의 이름을 isMale()으로 변경해야합니다.

+0

+1 또한 부울 게터 명명 규칙을 사용합니다. ;-) (사실 나는 그보다 더 빨리 당신을 upvoted하지만 그것은 내 마음에 들지 않습니다. 그래서 다른 사람들이 그것을 강화할 때 좋았습니다. :-)) –

+0

하나님, 나는 너무 오랫동안 내 머리를 긁어내어 계속 찾으려고했습니다. 무엇이 잘못되었고, 괄호는 전혀 나에게 일어나지 않았다. 답장을 보내 주셔서 감사합니다! –

관련 문제