Java) 제네릭클래스, 정적메서드, 정적제네릭메서드 를 이해해보자

나가을·2024년 7월 1일
0

java

목록 보기
9/12
항목제네릭 클래스정적 메서드정적 제네릭 메서드
정의클래스 선언에 제네릭 타입 파라미터를 사용하는 클래스클래스에 속하는 정적 메서드메서드 선언에 제네릭 타입 파라미터를 사용하는 정적 메서드
타입 파라미터 위치클래스 레벨정적 메서드는 타입 파라미터를 사용하지 않는다메서드 레벨
타입 결정 시점클래스가 인스턴스화될 때정적 메서드는 타입 파라미터를 사용하지 않으므로, 타입 결정 시점이 없다. 메서드 정의 시 타입이 이미 결정메서드 호출 시
타입 파라미터 사용 가능 여부OXO
주된 목적클래스가 다양한 타입을 처리할 수 있도록 유연성을 제공클래스 수준에서의 공통 기능 제공정적 메서드에서 제네릭 타입을 사용하여 유연성을 제공
  • 제네릭 클래스: 클래스가 인스턴스화될 때 타입이 결정되므로, 다양한 타입을 유연하게 처리할 수 있다.
  • 정적 메서드: 클래스 단위로 작동하며, 클래스 인스턴스와 독립적으로 동작합니다. 제네릭 클래스의 타입 파라미터와 무관하다.
  • 정적 제네릭 메서드: 메서드 선언에 제네릭 타입 파라미터를 정의하여, 정적 메서드에서도 타입 안전성을 제공하고 유연성을 높인다.

타입이레이저

제네릭은 자바 컴파일 단계에서만 사용되고, 컴파일 이후에는 제네릭 정보가 삭제된다.
제네릭에 사용한 타입 매개변수 가 모두 사라지는 것이다.
쉽게 이야기해서 컴파일 전인 .java 에는 제네릭의 타입 매개변수가 존재하지만,
컴파일 이 후인 자바 바이트코드 .class 에는 타입 매개변수가 존재하지 않는 것이다.

자바 컴파일러는 제네릭에서 타입 인자로 지정한 타입으로 캐스팅하는 코드를 추가해준다.
따라서 타입이 모두 지워져도 따로 캐스팅 필요없이 정상작동한다.

profile
도라도라 코딩나라

0개의 댓글