20240701_제네릭

Korangii·2024년 7월 1일

Java

목록 보기
13/24
post-thumbnail

upcasting 시 문제없음
downcasting 시 문제 발생

  • 어떤 객체가 대입되었는지 확실하지 않기 때문에

제네릭

  • upcasting이나 downcasting 시 문제가 없도록 사용

해결방법 1 : 내용물의 타입 알기(제네릭 활용)
해결방법 2 : 강제타입변환

제네릭 : 구현부에서 사용, object 타입 객체 사용


제네릭 메소드

  • 메소드를 호출할 때 타입이 결정된다.
  • 주로 static 타입에서 사용된다.

클래스

  1. 클래스명.class
  2. Class.forName("")
  3. 인스턴스 변수.getClass(); - 인스턴스를 통해 클래스를 얻고 싶을 때 사용

<?> : 모두 제한없음

public class Course {
//모든 사람이면 등록 가능
public static void registerCourse1(Applicant<?> // applicant) {
System.out.println(applicant.kind.getClass().getSimpleName() +
"이(가) Course1을 등록함");
}
//학생만 등록 가능
public static void registerCourse2(Applicant<? extends Student> applicant) {
System.out.println(applicant.kind.getClass().getSimpleName() +
"이(가) Course2를 등록함");
}
//직장인 및 일반인만 등록 가능
public static void registerCourse3(Applicant<? super Worker> applicant) {
System.out.println(applicant.kind.getClass().getSimpleName() +
"이(가) Course3을 등록함");
}
}

자바가 제공해주는 상당수의 라이브러리가 이 표현을 사용한다.
따라서 해석할 수 있어야 한다.
리턴타입 메소드명(

profile
https://honeypeach.tistory.com/ 로 이전했습니다.

0개의 댓글