簡體   English   中英

使用變量中的Class實例化Java匿名內部類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM