【问题标题】:Get class object from generic type从泛型类型中获取类对象
【发布时间】:2013-03-15 09:47:07
【问题描述】:

我想通过删除无用的类来简化项目。我所说的无用类是指:

public class MainPage extends TileGridFragment<MainModel> {}

这个类的整个逻辑由TileGridFragment实现,数据由MainModel提供,通过单例类访问哪个实例。

我想将此类的实例化推迟到以后,所以我只需将MainPage.class 传递给我的方法。

由于MainPage 等同于TileGridFragment&lt;MainModel&gt;,我想删除这个类并改用TileGridFragment&lt;MainModel&gt;.class 之类的东西。

但这不起作用,我没有主意。

我也试过Class.forName,但它抛出了ClassNotFoundException

有什么想法吗?

【问题讨论】:

标签: java android generics reflection


【解决方案1】:

如果MainPage的实现实际上是{},则通过TileGridFragment.class即可。实际的类型参数与运行时无关,因为它们被 erasure 删除。

此外,由于擦除,您可以将新的TileGridFragment(具有原始类型,作为TitleGridFragment.class.newInstance() 的结果)转换为TitleGridFragment&lt;MainModel&gt;,并且不会产生附带损害(除了来自编译器,可以抑制)。

【讨论】:

    【解决方案2】:

    你真的不能,你可能会从反思中得到一些快乐,但我不确定你到底想做什么。

    在这里试试: Get generic type of class at runtime

    【讨论】:

    • 感谢您的回答。我已经阅读了这个有点相关的问题,但这不是重点。我已经使用这些技术来获取MainModel 的类,以获取集中实例。
    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多