728x90
인텔리제이에서 자동 생성해주는 코드도 만들어보고
vo class의 toString이나 세터,게터, 생성자 코드들도 알아서 recreate해줘서
가로로 쓰는 것도 알았다. 코드 형태가 생소해서 눈에 잘 안들어오긴 했지만 왜 인텔리제이들로 하는지 좀 이해가 되어간다
hashCode()는 아직 수학적인 계산이나 그런 것 때문에 좀 멀리 있는 느낌이고 equals()는 obj 비교하는 이유랑 getClass도 대강 감은 잡은 것 같다
package com.prac01.collection.set.model.vo;
public class Dog {
// default constructor
private String name;
private double weight;
public Dog() {}
public Dog(String name, double weight){
this.name = name;
this.weight = weight;
}
// getter & setter
public void setName(String name){
this.name= name;
}
public String getName(){
return name;
}
public void setWeight(double weight){
this.weight = weight;
}
public double getWeight(){
return weight;
}
// toString
@Override
public String toString(){
return name + " " + weight+"kg";
}
// equals()
public boolean equals(Object obj){
// 1.클래스 비교
if(this == obj){
return true;
}
if(obj == null){
return false;
}
if(getClass() != obj.getClass()){
return false;
}
// 2.내용 비교
Dog other = (Dog)obj; // (Dog) 다운캐스팅
if(name == null){
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() {
final int PRIME = 31; // 컴퓨터가 이해하기 좋은 숫자가 31이라함
int result = 1;
result = PRIME * result + (name == null ? 0 : name.hashCode()); // 내 해쉬코드가 아니라 스트링의 해쉬코드를 가져오는 것
result = PRIME * result + (int)weight; // 형이 안맞아서 에러나니 캐스팅 또는 소수점 없게끔 계산
return result;
}
// @Override
// public boolean equals(Object obj) {
// return super.equals(obj);
// }
//
// @Override
// public String toString() {
// return super.toString();
// }
}
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Java] Collection : Set 1st practice (0) | 2022.08.27 |
---|---|
[1일1코딩][IDE] 인텔리제이 사용 및 익숙해지기 4th : bin & src 폴더 + 변화점 (0) | 2022.08.26 |
[1일1코딩][Web] boardDetailView 6th 댓글 script part(댓글 ajax) (0) | 2022.08.25 |
[1일1코딩][Web] boardDetailView 5th (0) | 2022.08.24 |
[1일1코딩][Java] 컬렉션 List 6th - 비교 equals(),toString(),hashCode() (0) | 2022.08.23 |