Java 检索泛型类的.class属性

Java 检索泛型类的.class属性,java,generics,ektorp,Java,Generics,Ektorp,我正在尝试使用构造函数(从Ektorp库)扩展以下类: 我尝试了(Order).class,Order.class和neworder().getClass(),但运气并不好 如何检索泛型类的.class属性?正确的语法是: Order.class 在Java中,Order.class和Order.class在运行时是同一个类,泛型类型信息(类型参数)在运行时丢失,因为Java的泛型类型系统存在严重限制。如果更改类型以发布内部类型,可以通过以下方式获得: public class CouchDb

我正在尝试使用构造函数(从Ektorp库)扩展以下类:

我尝试了
(Order).class
Order.class
neworder().getClass()
,但运气并不好


如何检索泛型类的.class属性?

正确的语法是:

Order.class

在Java中,
Order.class
Order.class
在运行时是同一个类,泛型类型信息(
类型参数)在运行时丢失,因为Java的泛型类型系统存在严重限制。

如果更改类型以发布内部类型,可以通过以下方式获得:

public class CouchDbRepositorySupport<C, T extends CouchDbRepositorySupport<C>> implements GenericRepository<T> {
...

    protected CouchDbRepositorySupport(Class<C> type, CouchDbConnector db) {
        ...
    }

public class OrderRepository extends CouchDbRepositorySupport<MenuItem, Order<MenuItem>> {

    public OrderRepository(CouchDbConnector db) {
        super(MenuItem.class, db);
公共类CouchDbRepositorySupport实现GenericRepository{
...
受保护的CouchDbRepositorySupport(类类型,CouchDbConnector db){
...
}
公共类OrderRepository扩展了CouchDBRepository支持{
公共订单存储库(CouchDbConnector db){
超级(MenuItem.class,db);
关于如何声明父类,您有一些选择;这只是一个示例


免责声明:我是在没有IDE的情况下手工完成的,因此可能会有一些小的语法问题,但是这个概念应该可以使用。

java编译器不同意这一点:
构造函数CouchDbRepositorySupport(Class,CouchDbConnector)是未定义的
@jdreux您自己已经说过了:编译器。在编译期间会检查泛型类型,而表达式
Order.class
在运行时会进行计算,并且在运行时类型参数
会从类的类型信息中删除,就好像它从未存在过一样Order.class没有语法因为它的运行时等价物不存在?@jdreux是的。在这篇优秀的文章中阅读它,看看问题“什么是类型擦除?”和“什么是具体化?”。引用:“JVM无法区分列表和列表之间的区别”每周似乎都会有这样的问题。@PaulBellora可能是因为任何google查询或其他查询只返回有关在运行时查找泛型对象类型的问题。这个问题有些不同。
 Syntax error on token ">", void expected after this 
Order.class
public class CouchDbRepositorySupport<C, T extends CouchDbRepositorySupport<C>> implements GenericRepository<T> {
...

    protected CouchDbRepositorySupport(Class<C> type, CouchDbConnector db) {
        ...
    }

public class OrderRepository extends CouchDbRepositorySupport<MenuItem, Order<MenuItem>> {

    public OrderRepository(CouchDbConnector db) {
        super(MenuItem.class, db);