[英]Instantiate Java anonymous inner class with generic using Class in variable
在Java 7中是否有可能使用我手頭的Class
對象來實例化具有泛型類型的匿名內部類?
這是我試圖實例化的泛型類的簡化版本:
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){}
}
這樣的事情可能嗎?
我希望能夠這樣做,以便我可以使用我在運行時確定的類變量,但是還沒有想出如何:
Class clazz = MyDomainClass.class ... DomainBuilder builder = new DomainBuilder<clazz>() {}
我們實際上不能這樣做。 因為通過這樣做,我們沒有在對角線<>
定義class Type
,而是傳遞類型為Class
的對象claszz
。
您必須為直接傳入Class
對象時創建一個完全獨立的構造函數。 你無法再以你想要的方式推斷它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.