JAVA,객체지향

제네릭이란?(와일드카드)

25G 2021. 11. 28. 10:11

 

제네릭은 어떤 클래스를 만들 때 타입이 정해져 있지 않아서 오브젝트로 하면 다운 캐스팅이라는 불편함이 있으니까 제네릭을 사용해서 묶어라는 문법이다.


와일드카드

 

와일드카드 ->? -> 몰라!

retrun타입이 ? 일 때는 어떤 타입을 리턴할지 모른다라고 하는 것이다.

그럼 이 몰라는 무슨 뜻이냐면 <? extends Object>라는 듯으로? 는 "모든 클래스"라는 뜻이다.

자 다음과 같은 상황에 가방에서 공을 꺼낼 때 어떨 때는 축구공타입을 어떨때는 농구공 타입을 꺼내고 싶은 상황이 생길 수 도있다. 하지만 위 코드에서처럼 return타입이 축구공이기 때문에 농구공타입을 return 할 때 오류가 나는 것이다.

이럴 때 "?"를 사용하면 아주 편하게 작업할 수 있다.

하지만 여기서 문제가 있다. 와일드카드로 하면 Object타입이 되기 때문에 추상적인 것에 타입을 묶으면 된다.

와일드카드의 기본은 오브젝트 타입

추상적인것에 타입을 묶어서 일치시킨 다음 오버라이드로 getName을 무효화시켜서 동적 바인딩이 됐기 때문에 충 구공이 잘 담겼다.

'JAVA,객체지향' 카테고리의 다른 글

예외처리란?  (0) 2021.12.01
스레드란?  (0) 2021.12.01
SRP와 DIP  (0) 2021.11.26
추상클래스와 인터페이스의 차이  (0) 2021.11.26
추상클래스  (0) 2021.11.26