2013-03-15 255 views
1

我想通過刪除無用的類來簡化項目。無用的課程我的意思是這樣的:從泛型類型獲取類對象

public class MainPage extends TileGridFragment<MainModel> {} 

這個類的整個邏輯是由TileGridFragment實現,該數據由MainModel提供,其實例訪問歸功於一個單獨的類。

我想推遲這樣的類的實例到以後的時間,所以我只是通過MainPage.class我的方法。

由於MainPage相當於TileGridFragment<MainModel>,我想刪除這個類,而改爲使用類似TileGridFragment<MainModel>.class的東西來代替。

但這不起作用,我出於idead。

我也試過Class.forName,但是它會拋出一個ClassNotFoundException

有什麼想法?

+0

你不能這樣做「Type Erasure」。泛型是編譯時的類http://docs.oracle.com/javase/tutorial/java/generics/erasure.html – Greensy 2013-03-15 11:09:08

回答

1

如果MainPage的實施實際上是{},只是通過TileGridFragment.class。實際的類型參數在運行時是不相關的,因爲它們被刪除刪除

同時,由於擦除的,你可以施放新TileGridFragment(有原始類型,爲TitleGridFragment.class.newInstance()的結果)TitleGridFragment<MainModel>,並且療法不會間接損害(不是從編譯器一個小小的警告等,可以被壓制)。

0

你真的不能,你可能會從反思中得到一些喜悅,但我不確定你想要做什麼。

試一下: Get generic type of class at runtime

+0

感謝您的回答。我已經讀過這個有點相關的問題,但這不是重點。我已經使用這種技術來獲取MainModel類,以獲取集中式實例。 – Geoffroy 2013-03-15 09:54:44