본문 바로가기
java

제네릭의 사용이유

by improve 2024. 1. 29.
package org.example;

// 다형성으로 모든 객체는 부모 객체에 담을 수 있다.

class Apple {
    private String name;
    
    public Apple(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "Apple{" +
                "name='" + name + '\'' +
                '}';
    }
}

class Orange{
    private String name;
    
    public Orange(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "Orange{" +
                "name='" + name + '\'' +
                '}';
    }
}
// 1.제네릭 이전의 방법
class Box{
    private Object obj; // 모든 오브젝트를 담을 수 있다.
    public Object getObj() {
        return obj;
    }
    public void setObj(Object obj) {
        this.obj = obj;
    }
}
public class Main {
    public static void main(String[] args) {
        Box box1 = new Box();
        box1.setObj(new Apple("사과"));
        
        Box box2 = new Box();
        box1.setObj(new Orange("오렌지"));
        
//        box1.getObj();
//        box2.getObj();
            
        Orange orange = (Orange) box1.getObj();
        Apple apple = (Apple) box2.getObj();

        System.out.println(orange);
        System.out.println(apple);
        }
    }
}

 

package org.example;

// 다형성으로 모든 객체는 부모 객체에 담을 수 있다.

class Apple {
    private String name;

    public Apple(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "Apple{" +
                "name='" + name + '\'' +
                '}';
    }
}

class Orange{
    private String name;

    public Orange(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "Orange{" +
                "name='" + name + '\'' +
                '}';
    }
}
// 2.제네릭의 방법
class Box<T>{
    private T obj; // 모든 오브젝트를 담을 수 있다.
    public T getObj() {
        return obj;
    }
    public void setObj(T obj) {
        this.obj = obj;
    }
}
public class Main {
    public static void main(String[] args) {
        Box <Apple> box1 = new Box();
        box1.setObj(new Apple("사과"));

        Box <Orange> box2 = new Box();
        box2.setObj(new Orange("오렌지"));

       Apple apple = box1.getObj();
       Orange orange = box2.getObj();

//        Orange orange = (Orange) box1.getObj();
//        Apple apple = (Apple) box2.getObj();

        System.out.println(orange);
        System.out.println(apple);
        }
    }
}

 

개발자의 실수를 줄이고자 사용하는 방법이다.

 

 

'java' 카테고리의 다른 글

JAVA 의 메모리 모델  (0) 2024.01.31
컬렉션  (0) 2024.01.30
예외처리  (0) 2024.01.25
인터페이스  (0) 2024.01.25
상속클래스의 매소드 오버로드  (0) 2024.01.23