由于各种原因,我的方法接受通用的Object
参数。该方法的作用取决于实际的类型,所以我做了一些instanceof
现在,在一种特定情况下,我需要检查类型是否为Iterable。
我发现带有泛型的instanceof无效。
x instanceof Iterable<Integer>
那么,除了循环遍历每个元素并测试其类型之外,还有哪些选择?
最佳答案
如果您无法影响方法的签名或获得的Iterable实例,则无法区分例如的实例。 Iterable<Object>
仅包含Iterable<Integer>
实例中的整数。它们在各个方面都是相同的。实际上,出于这个原因,“ Iterable<Integer>
的实例”这个概念很模糊。实例是运行时工件,而构造函数类型参数是编译时工件。