我有以下幾點:獲取擴展ArrayList使用的類型的類名稱<T>?
public class Foo<T extends Grok> extends ArrayList<T> {
}
我怎樣才能找到被T在運行時所表示的類名?舉例來說,假設我分配是這樣的:
Foo<Apple> foo = new Foo<Apple>();
有沒有一種方法可以讓我得到蘋果作爲foo的構造函數?:
public Foo() {
super();
String classname = this.getTypeClassName(); // "com.me.Apple"
}
我可以只添加一種方法使用的類名設定該類名,但寧願這樣用戶就不必做在內部把它拿來,
謝謝
+1。是的,這是關於你可以做的最好的事情,告誡說絕對沒有辦法阻止'class Giraffe extends Grok {} ... Foo foo = Foo.create(Giraffe.class)''。 –
2010-11-15 22:51:31
@Marcelo:不真實。 'Foo foo = Foo.create(Giraffe.class)'不會編譯。 'create'方法是通用的,並返回'Foo ',其中'T'是傳遞給它的''類型''。 'Foo.create(Giraffe.class)'返回'Foo ',而不是'Foo '。 –
ColinD
2010-11-15 22:54:10
我的錯誤。我沒有發現'Class'。我也不知道你甚至可以做到這一點! –
2010-11-16 02:11:32