나는 고객을 서비스에 등록시키는 몇 가지 예제 코드를 연구 중이며, 아래의 메소드는 고객이 해당 서비스 유형을 가지고 있는지 확인한다. 서비스와 같은 객체와 비교하려면 equals()
메소드를 사용해야한다고 가정합니다.자바 체크 객체가 ==와 동일하지만 성공 함
아래 코드는 (고객 등급에서) 완벽하게 작동하지만 변경 후 작동하지 않습니다. ==
을 equals.()
으로 변경하는 이유를 설명 할 수 있습니까? 어떤 경우에는 ==
을 사용하여 평등이 필요합니까? 많은 감사합니다!
boolean hasService(Service sd) { //Service is a class that has int, String and ArrayList as variable
boolean hasService = false;
for (int i=0; i<.length; ++i) { //
//doesn't work if change to ((serviceAvailable[i]).equals(pd)), why?
if (serviceAvailable[i]==sd) //serviceAvailable is an Array stores different services
hasService = true;
}
return hasService;
}
클래스 서비스는 다음과 같습니다 : 등호는 비교하는 객체에 등호의 구현에 따라 달라집니다 동안
class Serivce {
private String name;
private int price;
private ArrayList <Customers> customersErolled;
//geters and setters methods
boolean equals (Serive a){
if (this.paperName.equals(a.paperName)&&a.semester==this.semester&& a.year==this.year&&a.studentsEnrolled.equals(this.studentsEnrolled)){
return true;
}else{
return false;
}
원하는대로 작동 시키려면 *'* equals'를 재정의해야합니다. '=='를 사용하는 것과 완전히 똑같은 디폴트 정의 ('null' 값을 가진 이슈 제외)가 이미 작동 할 수 있습니다. –
이것은'Service' 클래스의 구현에 달려 있습니다. 더 이상의 정보가 없으면 귀하의 질문에 답변 할 수 없습니다. –
나는 그것들이 같은 객체인지를 == 체크하지만, 혼란 스럽다는 점은 서비스가 객체이고 equals를 사용해야한다고 생각한다는 것을 이해한다. 하지만 반대로 == 작동 – stillAFanOfTheSimpsons