簡體   English   中英

使用Java反射和泛型:方法是否可以將實際類型指定為其返回值?

[英]Using Java reflection and generics: can a method specify an actual type as its return value?

我有一個維護Baz類型對象列表的類。 但是,我想在此列表中放置一些對象,這些對象是從Baz類型的子類實例化的(用於重寫行為)。

到目前為止,這很簡單-List中的多態。 但是,維護列表的類本身是抽象的,並且不同的實現將要求在列表中放置不同的類型。 一些抽象函數getTypeToUse應該指定要插入列表中的元素的類型。 這在Java中可行嗎?

考慮以下偽代碼:

public abstract class Foo {
    public void Bar() {
        List<Baz> qux = new ArrayList<>();
        Type buzz = getTypeToUse();
        Baz fizz = new buzz();
        qux.add(fizz);
    }

    // The returned Type should be some subclass of Baz
    // It would be nice to enforce this, like <? extends Baz>
    public abstract Type getTypeToUse(); 
}

謝謝!

您可以改為返回一個類對象。 Class<T>實現接口Type 像這樣定義您的方法:

public abstract Class<? extends Baz> getClassToUse();

然后像這樣實現它(在Baz類中):

@Override
public Class<? extends Baz> getClassToUse() {
   return Baz.class;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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