@Override
public boolean equals(Object obj) {
// 객체 비교
if (this == obj) { // this는 주소값 비교할려고 넣은 것
return true;
}
if(obj == null) {
return false;
}
if(getClass() != obj.getClass()) { // 내 클래스 정보와 상대방의 클래스 정보가 같은지 비교
return false;
}
pModelVo02 other = (pModelVo02)obj; // 다운캐스팅 : obj->Snack
if(name == null) { // other는 레퍼런스 변수
if(other.name != null) {
return false;
}
}else if(!name.equals(other.name)) { // 이름에 대한 비교
return false;
}
if(weight != other.weight) { // 목록에 대한 비교
return false;
}
return true;
}
@Override
public int hashCode()
@Override
public int hashCode() {
final int PRIME = 31; // 컴퓨터가 이해하기 좋은 숫자가 31이라함
int result = 1;
result = PRIME * result + (name == null ? 0 : name.hashCode()); // 내 해쉬코드가 아니라 스트링의 해쉬코드를 가져오는 것
result = PRIME * result + weight; // 형이 안맞아서 에러나니 캐스팅 또는 소수점 없게끔 계산
return result;
}
@Override
public int compareTo(Object o)
@Override
public int compareTo(Object o) {
// Dog 이름 오름차순
// Object o를 다운 캐스팅 해줘야함
pModelVo02 otherP = (pModelVo02)o;
String other = otherP.name;
int result = name.compareTo(other); // compareTO 자체가 인트값 반환
return 0;
}
맨 왼쪽부터 동그라미에 빨간색 x표시 뜬다. 컴파일시 에러난다는 의미이며, 위에를 클릭해보면 스샷처럼 오른쪽에 툴팁으로 어떤 에러가 떴는지 나오며 흰색 배너에 해결책이 제시되고, 그 오른쪽에 노란 배너에 해당 선택지들이 실제로 어떻게 코드가 바뀌는지 미리보여주기가 뜬다 int에 쳐진 위쪽 동그라미 안에 보면 옆은 빨간색으로 밑줄이 쳐져 있는데 이 또한 에러발생을 알려주는 표시이다 다만 주석해서 왼쪽에 x표시가 안뜬 것은 컴파일시에 문제가 없기 때문.
에러는 개발자에게 항상 맞닥드리는 부분이니 개발자가 되기 위해 공부를 막 시작했다면 꼭꼭 숙지해주자!!