在 Java 中,处理泛型类时,通常需要确定泛型类型所持有的具体类型运行时。然而,泛型类型信息在编译过程中会被删除,这使得直接访问它成为一个挑战。
让我们考虑一个例子:
public class MyGenericClass<T> { public void doSomething() { T instance = (T) thirdPartyLib.create(T.class); } }
在这种情况下,T.class 将产生一个由于泛型类型 T 未知,因此出现非法类文字错误。为了解决这个问题,需要一种解决方法。
一种有效的解决方法是将类型作为参数传递给静态方法,该方法将向泛型类提供类信息。下面是一个示例:
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(); } }
此方法允许您显式传递类类型,确保泛型类可以访问必要的信息。虽然此解决方法可能不是最优雅的解决方案,但它提供了一种可靠的方法来在运行时确定泛型类型的类。
以上是如何在运行时确定Java中泛型类型的类?的详细内容。更多信息请关注PHP中文网其他相关文章!