检索泛型类的.class属性

jd.*_*jd. 6 java generics ektorp

我试图用构造函数(来自Ektorp库)扩展以下类:

public class CouchDbRepositorySupport<T extends CouchDbDocument> implements GenericRepository<T> {

...

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

}
Run Code Online (Sandbox Code Playgroud)

这是我的实现:

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

    public OrderRepository(CouchDbConnector db) {
        super(Order<MenuItem>.class, db);
Run Code Online (Sandbox Code Playgroud)

问题出在Order<MenuItem>.class零件上.Java编译器告诉我:

 Syntax error on token ">", void expected after this 
Run Code Online (Sandbox Code Playgroud)

我试着用(Order<MenuItem>).class,Order.classnew Order<MenuItem>().getClass()没有更好的运气.

我该怎么做才能检索泛型类的.class属性?

Boh*_*ian 1

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

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);
Run Code Online (Sandbox Code Playgroud)

关于如何声明父类,您有几种选择;这只是一个例子。

免责声明:我在没有 IDE 的情况下手动完成了此操作,因此可能存在一些小的语法问题,但这个概念应该可行。