【问题标题】:Check type of generic检查泛型的类型
【发布时间】:2017-01-18 17:50:44
【问题描述】:

我有这个方法:

public <T> void onMultipleSelectionTextFinished(
          @NonNull ArrayList<FMultipleSelectionText.HolderItem<T>> holderItems, 
          int payload) {
    // check here
}

我如何在其中检查 holderItem 的类型是否为 ArrayList&lt;FMultipleSelectionText.HolderItem&lt;EFunction&gt;&gt; ,然后将其转换为该类型并以特殊方式处理?

编辑:

我尝试使用instanceof,但它说:

此外,我先将其强制转换为Object,然后再将其强制转换为我需要的,但这不是一个优雅的解决方案:(

【问题讨论】:

  • 如果您需要特定类型的功能,请不要使用泛型

标签: java android


【解决方案1】:

你不能在编译时这样做,因为TypeErasure 在运行时。或者,您可以使用反射来执行此操作,Guava API 也提供了完成此任务的方法。 请参考这个link

【讨论】:

  • 嗯......我让我的存在变得复杂了。如果这是唯一的方法,我只需要更改整个结构。这样做比使用反射更快:)
  • 你可以试一试。 :) @AndreiBogdan
猜你喜欢
  • 1970-01-01
  • 2020-09-18
  • 2016-10-10
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多