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
반응형

+ Recent posts