Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]Generic Class 본문
Contents
접기
[예제코드]
Apple.java
package test.mypac;
public class Apple {
}
Banana.java
package test.mypac;
public class Banana {
}
Orange.java
package test.mypac;
public class Orange {
}
FruitBox.java
package test.mypac;
public class FruitBox<T>{
//Generic Class를 만드는 이유?
//메인메소드에서 참조 데이터 타입만 던져주면
//자동으로 그 객체타입에 맞게 클래스가 구성되었으면 좋겠다면?
//Generic Class는 즉, 아직 결정되지 않은 타입이다!
//필드의 data type이 Generic class에 의해서 정해진다!
public T item;
public void setItem(T item) {
this.item=item;
}
public T getItem() {
return this.item;
}
}
MainClass01.java
package test.main;
import test.mypac.*;
public class MainClass01 {
public static void main(String[] args) {
//제너릭 클래스 사용해보기
//왼쪽 <>안 내용은 생략 불가! 오른쪽 <> 안 내용은 생략 가능!
//<>안에 클래스명 Apple을 넣어준다. --> Apple 객체 생성 후 appleBox에 참조값 대입
FruitBox<Apple> appleBox = new FruitBox<Apple>();
//<>안에 클래스명 Banana을 넣어준다. --> Banana 객체 생성 후 bananaBox에 참조값 대입
FruitBox<Banana> bananaBox = new FruitBox<Banana>();
//<>안에 클래스명 Orange을 넣어준다. --> Orange 객체 생성 후 orangeBox에 참조값 대입
FruitBox<Orange> orangeBox = new FruitBox<Orange>();
//<>안에 클래스명 Integer을 넣어준다. --> Integer 객체 생성 후 intBox에 참조값 대입
FruitBox<Integer> intBox = new FruitBox<Integer>();
//setItem() 메소드에 전달해야하는 type이 Generic class에 의해서 정해진다.
appleBox.setItem(new Apple()); //참조값을 인자로 넘겨준다.
bananaBox.setItem(new Banana()); //참조값을 인자로 넘겨준다.
orangeBox.setItem(new Orange()); //참조값을 인자로 넘겨준다.
intBox.setItem(3); //정수를 인자로 넘겨준다.
//getItem() 메소드가 리턴해주는 type이 Generic class에 의해서 정해진다.
//필드의 data type이 Generic class에 의해서 정해진다!
//참조값이 반환된다. --> test.mypac.Apple@15db9742
System.out.println(appleBox.getItem());
//참조값이 반환된다. --> test.mypac.Banana@6d06d69c
System.out.println(bananaBox.getItem());
//참조값이 반환된다. --> test.mypac.Orange@7852e922
System.out.println(orangeBox.getItem());
//정수가 반환된다. --> 3
System.out.println(intBox.getItem());
}
}
[코드설명]
FruitBox<Apple> appleBox = new FruitBox<Apple>(); 하면 어떻게 될까?아래 그림처럼 T 가 모두 Apple로 바뀐다.
'공부 > JAVA' 카테고리의 다른 글
[JAVA]최상위 클래스인 Object클래스 (상속은 extends, 상속관계에서 생성자호출, 다중상속은 불가능하다) (0) | 2020.11.29 |
---|---|
[JAVA]배열4_클래스와 배열(for문으로 배열에 값 대입하기) (0) | 2020.11.29 |
[JAVA]배열3_new로 배열 생성하기(리터럴을 이용한 배열생성과의 비교, 배열 생성 후 값 대입하지 않으면 어떻게 될까) (0) | 2020.11.29 |
Comments