Generic
2023. 7. 18. 12:59ㆍJAVA
public class Main {
public static void main(String[] args) {
// Generic [ 제네릭 - 아직 명칭이 정해지지 않은 상품 (제네릭 상품) ]
// class를 설계할때 멤버의 자료형을 결정하지 않고
// 사용할때(new 할때) 결정하도록 하는 문법
// 데이터를 하나 멤버변수로 저장하고 있는 Box 객체 생성
// 즉, 멤벼변수 1개짜리 Box 클래스를 설계
// new 할때 자료형을 결정
Box<String> b = new Box<String>();
b.a= new String("Hello");
b.a= "Hello"; //자동 new String();
System.out.println(b.a);
// new 할때 정수형을 저장하도록
// <>제네릭에 사용할 수 있는 자료형은 참조형만 가능함
// Box<int> b2= new Box<int>(); //error
// 기본형을 제네릭의 타입으로 저장하고 싶다면
// 기본형을 참조형타입을 감싸줘야 함.
// 기본형 8개에 대응된 참조형 자료형들이 존재함
// 이런 클래스들을 Wrapper 클래스라고 부름
// [Boolean, Byte, Character, Short, Integer,Float, Double]
// 축약형
Integer num= 10; // 자동 new Integer(10) --> auto boxing 이라고 부름
int n = num; // 자동 Integer객체를 int로 변환 --> auto unboxing 이라고 부름
System.out.println(n);
//위 처럼 Wrapper클래스를 사용하면 기본형처럼 사용이 가능함
//이를 제네릭에 적용함
Box<Integer> b2= new Box<Integer>();
//b2.a= new Interger(100);
b2.a= 100; // auto boxing
System.out.println(b2.a);
Box<Double> b3 =new Box<Double>();
b3.a= 3.14;
System.out.println(b3.a);
Box<Boolean> b4= new Box<Boolean>();
b4.aaa(true);
boolean k= b4.bbb();
// <>제네릭타입을 여러개 지정할 수 있음
Box2<String, Integer> box= new Box2<String, Integer>();
box.a = "sam";
box.b = 20;
System.out.println(box.a);
System.out.println(box.b);
}
}
Generic [ 제네릭 - 아직 명칭이 정해지지 않은 상품 (제네릭 상품) ]
class를 설계할때 멤버의 자료형을 결정하지 않고
사용할때(new 할때) 결정하도록 하는 문법
new 할때 <>안에 전달된 자료형으로 멤버의 타입이 결정됨
제네릭에 사용할 수 있는 자료형은 참조형만 가능함
기본형을 제네릭의 타입으로 저장하고 싶다면
기본형을 참조형타입을 감싸줘야 함.
기본형 8개에 대응된 참조형 자료형들이 존재함
이런 클래스들을 Wrapper 클래스라고 부름
[Boolean, Byte, Character, Short, Integer,Float, Double]

축약형
Integer num= 10; // 자동 new Integer(10) --> auto boxing 이라고 부름
int n = num; // 자동 Integer객체를 int로 변환 --> auto unboxing 이라고 부름
// new 할때 <>안에 전달된 자료형으로 멤버의 타입이 결정됨
public class Box<T> { // <>제네릭 문법
//데이터를 저장하는 멤버변수 1개
//클래스를 설계할때는 자료형을 정하지 않도록 하고 싶을때
T a;
//멤버함수의 파라미터나 리턴타입에도 제네릭타입 적용가능함
void aaa(T x) {
this.a=x;
}
T bbb() {
return this.a;
}
}
// <>제네릭타입을 여러개 지정할 수 있음
public class Box2<T,G> {
T a;
G b;
}
'JAVA' 카테고리의 다른 글
| Colletion 클래스들 - List (0) | 2023.07.18 |
|---|---|
| Java 고급 문법 - Collection 클래스들 (0) | 2023.07.18 |
| Interface 예제 (0) | 2023.07.14 |
| Interface (0) | 2023.07.14 |
| Abstract (0) | 2023.07.14 |