[英]How to get Instance of a Class using reflection in java having generics parameter and return type method?
[英]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.