gpt4 book ai didi

java - 获取模板参数的类数据类型?

转载 作者:行者123 更新时间:2023-11-30 02:50:19 25 4
gpt4 key购买 nike

给定一个模板类:

public class A<T> {}

并实例化为:

A<B> a = new A<>();

如何获取模板参数的类数据类型?,相当于执行 B.class 但使用 T 模板参数,以便它适用于不同的实例化。

背景,我使用 JAXB 将类编码/解编为 XML,但要创建 JAXBContext 需要 Class 对象。这个 JAXBContext 在模板类中使用,为了解决这个问题,我当前使用构造函数参数和模板参数的类:

public class A<T> {
public A( Class<T> tClass ){}
}

并将其实例化为:

A<B> a = new A<>( B.class );

这对我来说看起来有点奇怪,有更好的方法吗?

最佳答案

还有另一种方法可以在运行时获取类型信息。
匿名类不会发生类型删除。因此,您可以做的是在创建 A 类的对象时,只需添加 {} 即可使其成为匿名类。

A<B> aObject = new A<>() {};

并且您可以使用TypeTokenTree来获取第n个泛型参数。

this.typeT = new TypeTokenTree(this.getClass()).getElement(0);

太棒了blog post Richard 描述了完整的工作流程。

这种方法的优点是,您的客户端不必每次都提供类型信息。

关于java - 获取模板参数的类数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38888532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com