2013-03-15 187 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