SMALL
제네릭이란 ?
언어에서 타입 안전성을 보장하기 위한 기능입니다 즉, Object 로 가져와도 되지만 타입 안정성을 보장하기위해 만든것이 제네릭인것 같다.
제네릭 쓰는 방법
public class Generic<T> {
private T t;
public T get() {
return this.t;
}
public void set(T t) {
this.t = t;
}
public static void main(String[] args) {
Generic<String> stringGeneric = new Generic<>();
stringGeneric.set("Hello World");
String tValueTurnOutWithString = stringGeneric.get();
System.out.println(tValueTurnOutWithString);
}
}
위의 코드를 보면 이해가 된다. Generic 클래스의 타입이 무엇을 받을지 몰라 제네릭타입 클래스로 선언을 하고, main 매서드에서 String 클래스로 타입을 주게 되었다 그러므로 set 매서드에서 String 타입으로 값을 받을수 있고 그 값을 받아 출력하는 코드이다.
덧붙이자면,
많이들쓰는 컬렉션도 제네릭 타입으로 만든 컬렉션들이다. Map, Set, List 같은것들은 모두 제네릭으로 선언된 클래스이다.
와일드카드
와일드 카드란? 아래에 있는 것들을 선언하여 제한을 둘수 있게 하는것이다.
- <? extends T> : T와 그 자손들만 사용 가능
- <? super T> : T와 그 조상들만 가능
- <?> : 제한 없음
주의 사항
무조건 제네릭 타입은 Wrapper 클래스로 줘야 된다. 또한,
객체의 static 멤버는 사용 불가능 하다.
왜냐하면
타입 변수는 인스턴스 변수로 간주되고, 모든 객체에 동일하게 동작해야하는 static 필드 특성상 사용 할 수 없다.
반응형
LIST
'Java' 카테고리의 다른 글
기본형(int)과 참조형(Student) 개념, 변수 대입 -1 (0) | 2023.12.18 |
---|---|
클래스 (객체) - 메모리 (0) | 2023.12.18 |
record (0) | 2023.05.16 |
Stream 클래스 (0) | 2023.05.03 |
형변환 (0) | 2023.04.19 |