为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取 Foo<T> 类型的类实例(Foo<T>.class 不起作用)

如何获取 Foo<T> 类型的类实例(Foo<T>.class 不起作用)

HUX布斯 2021-06-10 18:09:07
我想获得 Foo< T >.class 的类(正是 Foo < T>,既不是 T.class 也不是 Foo.class)public class A extends B<C<D>>{   public A() {     super(C<D>.class); // not work   }}在 StackOverflow 上有一条通过注入构造函数来获取泛型类的指令,但这不是我的情况,因为 C< D>.class (eg List< String>.class) 是语法错误。在这里,它似乎与语法而不是代码结构有关。为了显示更详细、更高级别的视图,原始代码如下,它在 Spring 框架中的 HATEOAS 模块:public class CustomerGroupResourceAssembler extends ResourceAssemblerSupport<CustomerGroup, CustomerGroupResource>{   public CustomerGroupResourceAssembler() {      super(CustomerGroupController.class, CustomerGroupResource.class);   }}public class CustomerGroupResource extends ResourceSupport {   private CustomerGroup data;}但现在我想将 CustomerGroupResource 参数化为public class Resource<T> extends ResourceSupport {   private T data;}然后    public class CustomerGroupResourceAssembler extends ResourceAssemblerSupport<CustomerGroup, Resource<CustomerGroup>>{      public CustomerGroupResourceAssembler() {         super(CustomerGroupController.class, Resource<CustomerGroup>.class); // not work here, even Resource.class      }    }
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

不幸的是,由于类型擦除,您尝试做的事情是不可能的。

有关泛型类型的信息仅在编译时可用,在运行时不可用。这是在 Java 中使用泛型的最大限制之一。这样做的原因是为了保持向后兼容性。


查看完整回答
反对 回复 2021-06-17
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信