2012-12-11 1 views
0

헤더를 감안할 때 :메서드 헤더가 주어진 이름 비교?

public boolean equals(Name otherName) 

가 나는 평등에 대한 두 개의 이름 개체를 비교하기로하고 있습니다. 지금 당장 가지고있는 것은 :

public boolean equals(Name otherName){ 
    return (name1.equalsIgnoreCase(name2)); 
} 

그러나 예상되는 오류가 발생합니다. 매개 변수를 변경하면 작동한다고 생각하지만 할당은 내가 해당 헤더를 사용하도록 요청합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 여기

이름 생성자입니다 ". 식별자를 예상 오류"

public Name (String first, String middle, String last){ 
firstName = first; 
middleName = middle; 
lastName = last; 
} 
+2

'이름'이란 무엇입니까? 그것은 'equalsIgnoreCase' 메소드를 가지고 있습니까? – arshajii

+0

여기서 name1과 name2는 초기화 되었습니까? 더 나은 아직 그들은 어디서나 초기화됩니까? – Rayshawn

+0

전달할 때 메서드 내에서 otherName을 사용하려는 것 같습니다. – Rayshawn

답변

0

당신이 얻을 name1name2이 정의되어 있기 때문입니다. equals 메서드 내에서 다른 객체를 전달하면 otherName으로 참조하고 객체 자체는 this으로 액세스 할 수 있습니다.

equalsIgnoreCaseName 클래스에 구현해야한다, 물론

public boolean equals(Name otherName) { 
    return (equalsIgnoreCase(otherName)); 
} 

public boolean equals(Name otherName) { 
    return (otherName.equalsIgnoreCase(this)); 
} 

또는

를 사용해보십시오.

+1

추가 nullcheck :'this.equalsIgnoreCase (otherName)'을 추가 할 필요가 없습니다. 그러나, 이것은'Name'이'equalsIgnoreCase' 메소드를 가지고 있다고 가정합니다. 아마도 'Name'은 여기에서 평등을 비교할 필요가있는 문자열 필드를 가지고 있지만 OP는 그러한 정보가있는 필드 나 메소드에 대해서는 아무것도 포함하지 않았습니다. – Vulcan

+0

@ Vulcan, 답변을 업데이트했습니다. –

+0

'equalsIgnoreCase'가이 클래스에서 어떻게 구현되는지 모르므로 'null'이 매개 변수로 전달되면 반드시 nullpointerexceptions을 방지 할 수 없다고 말할 수 없습니다 (따라서 null 검사가 반드시 쓸모있는 것은 아닙니다). 어느 쪽이든, 주어진 정보만으로이 질문에 대답하는 것은 정말로 어렵습니다. – arshajii