亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java中創建泛型類型的實例?

在Java中創建泛型類型的實例?

達令說 2019-06-01 16:44:15
在Java中創建泛型類型的實例?是否可以在Java中創建泛型類型的實例?我的想法是基于我所看到的答案no (由于類型擦除),但如果有人能看到我缺少的東西,我會感興趣的:class SomeContainer<E>{     E createContents()     {         return what???     }}編輯:原來超級代幣可以用來解決我的問題,但它需要大量基于反射的代碼,如下所示。我暫時不談這個問題,看看有沒有人能拿出和伊恩·羅伯遜截然不同的東西Artima條款.
查看完整描述

4 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

不知道這是否有幫助,但當您的子類(包括匿名)泛型類型時,類型信息可以通過反射獲得。例如,

public abstract class Foo<E> {

  public E instance;  

  public Foo() throws Exception {
    instance = ((Class)((ParameterizedType)this.getClass().
       getGenericSuperclass()).getActualTypeArguments()[0]).newInstance();
    ...
  }}

因此,當您子類foo時,您會得到Bar的一個實例,例如,

// notice that this in anonymous subclass of Fooassert( new Foo<Bar>() {}.instance instanceof Bar );

但這是很多工作,而且只適用于子類。不過很方便。


查看完整回答
反對 回復 2019-06-01
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

你需要某種抽象的工廠來推卸責任:

interface Factory<E> {
    E create();}class SomeContainer<E> {
    private final Factory<E> factory;
    SomeContainer(Factory<E> factory) {
        this.factory = factory;
    }
    E createContents() {
        return factory.create();
    }}


查看完整回答
反對 回復 2019-06-01
  • 4 回答
  • 0 關注
  • 1625 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號