[Java] 제네릭

박철현·2023년 4월 6일

Java

목록 보기
4/13

금일 프로젝트 제출한 과제 리팩토링을 하던 도중 제네릭 관련하여 궁금증이 생겼다.

  • 궁금한 점 : 반환형 타입에 <> 붙은것과 붙지 않은것에 차이는 뭐지?
  • 알게된 점
    1) 반환형 타입 명시 : 반환형 타입에 <>로 반환되는 객체의 타입을 명시해줄 경우 해당 타입에서 정의된 메서드를 사용할 수 있다.

ex) B라는 class에서 abc라는 메소드 정의 -> 함수의 결과로 반환되는 객체는 abc 메소드 사용 가능

A<B> like(int a) 
{
return ~~~;

}

2) 반환형 타입 명시 x : 반환형 타입을 명시하지 않는 경우 최상위 클래스인 Object 객체가 반환되고, 실제 반환되는 객체의 클래스에서 정의한 필드나 메소드를 사용할 수 없다.
(상위 타입변수가 하위 타입의 객체를 가질 경우 불가능한 점 동일 적용)

ex) B라는 class에서 abc라는 메소드 정의 -> 함수의 결과로 반환되는 객체는 Object 형이기에 abc 메소드를 사용할 수 없음 -> 명시적 형변환 해줘야 함

A like(int a) 
{
	return (B)~~;

}

// 동작하려면 위 함수의 return값에 명시적 형변환 : (B)를 붙여줘야 한다.
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글