0

Class在 Java 7 中是否可以使用我手头的对象实例化具有泛型类型的匿名内部类?

这是我试图实例化的泛型类的简化版本:

abstract class DomainBuilder<E> {

    private final Class<E> entityClass

    public DomainBuilder() {
        this.entityClass = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }

    ...
}

当我指定要在编译时构建的类时创建一个匿名内部类可以正常工作:

DomainBuilder builder = new DomainBuilder<MyDomainClass>() {}

我希望能够做到这一点,以便我可以使用Class我在运行时确定的变量,但还没有弄清楚如何:

Class clazz = MyDomainClass.class
...
DomainBuilder builder = new DomainBuilder<clazz>() {}

我也尝试过沿着这些思路创建方法,但没有运气:

Class clazz = MyDomainClass.class
DomainBuilder builder = builderFor(clazz)

public static DomainBuilder<T> builderFor(Class<T> t) {
    return new DomainBuilder<T>(entityManager){}
}

这样的事情可能吗?

4

2 回答 2

1

我希望能够做到这一点,以便我可以使用我在运行时确定的 Class 变量,但还没有弄清楚如何:

 Class clazz = MyDomainClass.class ... DomainBuilder 
 builder = new  DomainBuilder<clazz>() {}

我们实际上不能这样做。因为这样做,我们不是class Type在对角线中定义 a <>,而是传递一个claszztype的对象Class

于 2013-11-24T21:00:46.887 回答
1

Class当直接传入对象时,您必须创建一个完全独立的构造函数。您无法以您尝试的方式再次推断它。

于 2013-11-24T21:00:56.893 回答