由于各种原因,我的方法接受通用的Object参数。该方法的作用取决于实际的类型,所以我做了一些instanceof

现在,在一种特定情况下,我需要检查类型是否为Iterable。

我发现带有泛型的instanceof无效。

x instanceof Iterable<Integer>


那么,除了循环遍历每个元素并测试其类型之外,还有哪些选择?

最佳答案

如果您无法影响方法的签名或获得的Iterable实例,则无法区分例如的实例。 Iterable<Object>仅包含Iterable<Integer>实例中的整数。它们在各个方面都是相同的。实际上,出于这个原因,“ Iterable<Integer>的实例”这个概念很模糊。实例是运行时工件,而构造函数类型参数是编译时工件。

07-24 09:39
查看更多