我想知道如何询问java对象是List还是ArrayList。
例如:
if (Object instanceof List <?>)) {
// Do something
}
PS:我有几个不同类型的列表,并希望为任何列表实现该方法,无论它们包含哪种类型的数据。
答案 0 :(得分:3)
要测试某个实例是List
还是ArrayList
1 ,只需使用instanceof
。
请注意,根据JLS 15.20.2,instanceof
运算符的类型操作数必须是可重新生成的类型,并且在JLS 4.7中定义为:
所以这两个都应该有效:
if (obj instanceof List)) { // raw type
// Do something
}
if (obj instanceof List <?>)) { // type parameter is an unbounded wildcard
// Do something
}
但这将是一个编译错误:
if (obj instanceof List <Integer>)) {
// Do something
}
我有几个不同类型的列表,并希望为任何列表实现该方法,无论它们包含哪种类型的数据。
那没问题。
(但如果你希望这个方法只适用于具有某种数据类型的列表......基于一个简单的运行时类型检查,这将是一个问题。泛型类型的类型参数在运行时不可用于运行时测试,所以你需要单独测试列表中的每个元素......)
1 - 请注意,任何ArrayList
也 a List
...因为ArrayList
类实现了List
接口
答案 1 :(得分:0)
&#34;列表&#34;只是一个界面。实施是eq。 &#34; ArrayList的&#34;或&#34; LinkedList&#34;。
但这是Stackoverflow的另一个主题: