Java
자바 step11 - GenericClass
코딩탕탕
2022. 11. 7. 18:29
포괄 클래스(Generic Class)의 이해
자바 [JAVA] - 제네릭(Generic)의 이해
정적언어(C, C++, C#, Java)을 다뤄보신 분이라면 제네릭(Generic)에 대해 잘 알지는 못하더라도 한 번쯤은 들어봤을 것이다. 특히 자료구조 같이 구조체를 직접 만들어 사용할 때 많이 쓰이기도 하고
st-lab.tistory.com
기본 바탕이 되는 포괄 클래스(Generic Class)를 생성하였다.
package test.mypac;
/*
* T 는 type 파라미터 이다.
*
* T 를 포괄 클래스(Generic 클래스) 라고 한다.
*/
public class FruitBox<T> {
// 필드
private T item;
// 필드에 값을 넣는 메소드
public void setItem(T item) {
this.item=item;
}
// 필드에 저장된 값을 리턴하는 메소드
public T getItem() {
return item;
}
}
포괄 클래스인 FruitBox에 들어갈 외부 class(아이템)로 Apple class를 만들었고 이와 같은 class로 banana, orange class를 만들었다.
package test.mypac;
public class Apple {
}
package test.main;
import test.mypac.Apple;
import test.mypac.Banana;
import test.mypac.FruitBox;
public class MainClass01 {
public static void main(String[] args) {
// Generic 클래스를 Apple 로 지정해서 FruitBox 객체 생성하기
FruitBox<Apple> box1=new FruitBox<Apple>();
// 메소드의 인자로 Apple type 전달하기
box1.setItem(new Apple());
// 메소드가 리턴해주는 Apple type 받아오기
Apple item1=box1.getItem();
// Generic 클래스를 Bnana 로 지정해서 FruitBox 객체를 생성해서 위와 비슷한 작업을 해보세요.
FruitBox<Banana> box2 = new FruitBox<Banana>();
box2.setItem(new Banana());
Banana item2=box2.getItem();
}
}
FruitBox<?>안에 ?에 들어갈 것으로 외부 Apple, Bnana, Orange class를 넣었고, 그 아이템을 사용하여 메소드를 호출할 수 있다.
package test.main;
import test.mypac.Apple;
import test.mypac.Banana;
import test.mypac.FruitBox;
import test.mypac.Orange;
public class MainClass02 {
public static void main(String[] args) {
// 객체를 생성할 때 Generic 클래스는 생략이 가능하다.
FruitBox<Apple> box1=new FruitBox<>();
FruitBox<Banana> box2=new FruitBox<>();
FruitBox<Orange> box3=new FruitBox<>();
}
}