我想获得 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 中使用泛型的最大限制之一。这样做的原因是为了保持向后兼容性。
添加回答
举报
0/150
提交
取消