java检索。泛型类的class属性
我正在尝试使用构造函数(从Ektorp库)扩展以下类:
public class CouchDbRepositorySupport<T extends CouchDbDocument> implements GenericRepository<T> {
...
protected CouchDbRepositorySupport(Class<T> type, CouchDbConnector db) {
...
}
以下是我的实现:
public class OrderRepository extends CouchDbRepositorySupport<Order<MenuItem>> {
public OrderRepository(CouchDbConnector db) {
super(Order<MenuItem>.class, db);
问题在于Order<MenuItem>.class
部分。Java编译器告诉我:
Syntax error on token ">", void expected after this
我试过了{
我可以做些什么来检索。泛型类的class属性
# 1 楼答案
正确的语法是:
在Java中,
Order<MenuItem>.class
和Order.class
在运行时是相同的类,泛型类型信息(<MenuItem>
类型参数)在运行时丢失,因为type erasure是Java泛型类型系统的一个严重限制# 2 楼答案
如果将类型更改为发布内部类型,可以通过以下方式获得:
关于如何声明父类,您有一些选择;这只是一个例子
免责声明:我是在没有IDE的情况下手工完成的,因此可能会有一些小的语法问题,但是这个概念应该可以工作