> Java > java지도 시간 > 본문

Java에서 일반 유형의 클래스를 결정하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-15 22:18:02
원래의
147명이 탐색했습니다.

How to Determine the Class of a Generic Type in Java?

제네릭 유형의 클래스 결정: 대안 탐색

제네릭 프로그래밍 영역에서는 현재 사용 중인 제네릭 유형의 특정 클래스를 결정하는 것이 종종 중요합니다. 사용. 그러나 Java의 제네릭 유형 삭제 메커니즘은 이러한 노력에 도전 과제를 제기합니다.

이 문제를 해결하기 위해 실제 시나리오를 모방한 예를 살펴보겠습니다.

public class MyGenericClass<T> {
  public void doSomething() {
    // Imagine a 3rd party library call that expects a Class object
    T bean = (T) someObject.create(T.class);
  }
}
로그인 후 복사

안타깝게도 위 코드는 "유형 매개변수 T에 대한 잘못된 클래스 리터럴" 오류와 함께 실패합니다. 런타임 시 제네릭 타입 정보가 지워져 T.class의 직접적인 사용이 불가능하기 때문입니다.

그렇다면 어떻게 이 장애물을 극복할 수 있을까요? 실행 가능한 솔루션으로 해결 방법이 나타났습니다. 원하는 클래스를 매개변수로 받아들이는 정적 팩토리 메서드를 도입하는 것입니다.

public class MyGenericClass<T> {

  private final Class<T> clazz;

  public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {
    return new MyGenericClass<>(clazz);
  }

  private MyGenericClass(Class<T> clazz) {
    this.clazz = clazz;
  }

  public void doSomething() {
    T instance = clazz.newInstance();
  }
}
로그인 후 복사

이 접근 방식을 사용하면 객체 생성 중에 일반 클래스를 명시적으로 지정할 수 있으므로 런타임 삭제를 효과적으로 우회할 수 있습니다. 문제. 그러나 여기에는 단점이 있습니다. 일부 상용구 코드가 추가되고 API가 약간 복잡해집니다. 그럼에도 불구하고 클래스 유형을 결정해야 하는 경우에는 여전히 효과적인 해결 방법입니다.

위 내용은 Java에서 일반 유형의 클래스를 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿