[JAVA] Generic

고민정·2024년 4월 7일

JAVA

목록 보기
26/32


형변환도 상속관계에서는 자식 클래스만 사용 가능하다.

이게 무슨 소리냐 하면
Object 는 최상위 클래스이다.
그렇기에 자식클래스인 String, int 형 등등이 사용할 수 있다.
하지만 자식클래스가 부모 클래스의 기능을 사용하는 것은 괜찮아도 부모 클래스가 자식클래스만이 갖고있는 메서드 등을 막 사용할 수 없다.

사용하기 위해서는 형변환이 필요하다.
형변환 포스트 바로가기

E.g.

Object obj = new Object();
String str = (String)obj;

이런식으로 하나하나 형변환이 귀찮으니 애초부터 가상의클래스를 만드는 것이 generic 이다.


🎇 Generic

generic 의 사용법은 변수 앞 자료형 대신 generic 을 취할 변수를 사용해주면 된다.

public class Generic<E> {
    private E obj;

    public void setObj(E obj){
        this.obj = obj;
    }

    public E getObj(){
        return obj;
    }

}

이렇게 선언을 마쳤으면 이제 사용해보자.

public class GenericExam {
    public static void main(String[] args) {

        //String
        Generic<String> str = new Generic<>();
        StringBuffer bf = new StringBuffer();
        str.setObj(bf.append("hi ").append("Good to see you!").toString());
        String strResult=str.getObj();
        System.out.println(strResult);

        //Integer
        Generic<Integer> integer = new Generic<>();
        integer.setObj(2+2);
        int intResult=integer.getObj();
        System.out.println(intResult);

        //Object
        Generic<Object> obj=new Generic<>();
        obj.setObj(new Object());
        obj.getObj();
    }
}

main 에서 generic 을 사용할 때는
인스턴스화 하는 부분에 생성자 + <원하는 자료형> + 변수 이름 = new ... 형식으로 사용하면 된다.

각각 generic 변수로 string, integer, object 를 getter 와 setter 로 받고 리턴하고 있다.

이처럼 generic 은 가상의 클래스를 지정함으로써
정해지지 않아 유동적이게 사용 가능하다.

StringBuffer 는 쓰지 않아도 되는데 그냥 내가 최근에 배워서 뭐라도 써보고 싶었다!

StringBuffer Post

0개의 댓글