2014-02-11 41 views
0

由于各种原因,我的方法接受通用Object参数。什么方法取决于实际类型,所以我做一些实例测试对象是否是特定类型的通用列表

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

我发现使用泛型的instanceof不起作用。

x instanceof Iterable<Integer> 

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

回答

5

如果您不能影响您的方法的签名或您获得的Iterable实例的签名,则无法区分例如Iterable<Object>仅包含来自Iterable<Integer>的实例的整数。他们在各方面都是一样的;实际上,“Iterable<Integer>的实例”这个概念由于这个原因是模糊的。实例是运行时工件,构造函数类型参数是编译时工件。

相关问题