JAVA__45

AMJ·2023년 3월 9일
0

언어_log

목록 보기
45/57

저장소 변환전

  • main문
class Main {
    public static void main(String[] args) {
        Int저장소 a저장소1 = new Int저장소();

        a저장소1.setData(30);
        int a = a저장소1.getData();

        System.out.println(a);

        Double저장소 a저장소2 = new Double저장소();

        a저장소2.setData(5.5);
        double b = a저장소2.getData();

        System.out.println(b);


        사과저장소 a저장소3 = new 사과저장소();

        a저장소3.setData(new 사과());
        사과 c = a저장소3.getData();

        System.out.println(c);
    }
}
class 사과 {
}
class Int저장소 {
    Object data;

    int getData() {
        return (int)data;
    }

    void setData(Object inputedData) {
        this.data = inputedData;
    }
}

class Double저장소 {
    Object data;

    double getData() {
        return (double)data;
    }

    void setData(Object inputedData) {
        this.data = inputedData;
    }
}

class 사과저장소 {
    Object data;

    사과 getData() {
        return (사과)data;
    }

    void setData(Object inputedData) {
        this.data = inputedData;
    }
}

v1 변환 후 ( feat.Object저장소 )

  • 저장소를 하나로 통일 가능해 효율적 코드 양 줄어듬
  • 명시적 표현을 통해 사용하고자하는 main 문에서 적용
class Main {
    public static void main(String[] args) {
        Object저장소 a저장소1 = new Object저장소();

        a저장소1.setData(30);
        int a = (int)a저장소1.getData(); // Object 큰개념 > int 작은개념 > (명시적 형변환)

        System.out.println(a);

        Object저장소 a저장소2 = new Object저장소();

        a저장소2.setData(5.5);
        double b = (double)a저장소2.getData();

        System.out.println(b);


        Object저장소 a저장소3 = new Object저장소();

        a저장소3.setData(new 사과());
        사과 c = (사과)a저장소3.getData();

        System.out.println(c);
    }
}
class 사과 {
}
class Object저장소 {
    Object data;

    Object getData() {
        return data;
    }

    void setData(Object inputedData) {
        this.data = inputedData;
    }
}

v2 변환 후 ( feat.제너릭 ) [ T : type]

  • 제너릭 : (명시적)형변환 > 귀찮.. > T (암묵적 변수) 표현
    • 규칙 : 대부분 대문자표기한다.
    • 로직이 비슷 할 때 사용.
    • 템플릿 같은 것
class 제너릭저장소<T> {
    T data;

    T getData() {
        return (T)data;
    }

    void setData(T inputedData) {
        this.data = inputedData;
    }
}
  • main 문
class Main {
    public static void main(String[] args) {
        제너릭저장소<Integer> a저장소1 = new 제너릭저장소<>();

        a저장소1.setData(30);
        int a = a저장소1.getData(); // Object 큰개념 > int 작은개념 > (명시적 형변환)

        System.out.println(a);

        제너릭저장소<Double> a저장소2 = new 제너릭저장소<>();

        a저장소2.setData(5.5);
        double b = a저장소2.getData();

        System.out.println(b);


        제너릭저장소<사과> a저장소3 = new 제너릭저장소<>();

        a저장소3.setData(new 사과());
        사과 c = a저장소3.getData();

        System.out.println(c);
    }
}
class 사과 {
}
profile
재미있는 것들

0개의 댓글