Home > Java > javaTutorial > body text

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

Susan Sarandon
Release: 2024-11-12 07:39:02
Original
677 people have browsed it

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

Determining the Class of a Generic Type in Java

In Java, when dealing with generic classes, it's often necessary to determine the specific type that a generic type holds at runtime. However, generic type information is erased during compilation, making it a challenge to access it directly.

Let's consider an example:

public class MyGenericClass<T> {

  public void doSomething() {
    T instance = (T) thirdPartyLib.create(T.class);
  }
}
Copy after login

In this scenario, T.class will result in an Illegal class literal error because the generic type T is unknown. To address this, a workaround is required.

Workaround Solution

One effective workaround is to pass the type as a parameter to a static method, which will provide the class information to the generic class. Here's an example:

public class MyGenericClass<T> {

  private final Class<T> type;

  public static <U> MyGenericClass<U> createWithClass(Class<U> type) {
    return new MyGenericClass<>(type);
  }

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

  public void doSomething() {
    T instance = type.newInstance();
  }
}
Copy after login

This method allows you to pass the class type explicitly, ensuring that the generic class has access to the necessary information. While this workaround may not be the most elegant solution, it provides a reliable way to determine the class of a generic type at runtime.

The above is the detailed content of How to Determine the Class of a Generic Type in Java at Runtime?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template