Hic*_*aru 3 java list instanceof
我想知道如何询问 java 对象是 List 还是 ArrayList。
例如:
if (Object instanceof List <?>)) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
PS:我有几个不同类型的列表,无论它们包含什么类型的数据,我都想为任何列表实现该方法。
要测试实例是 aList还是ArrayList1,只需使用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
}
Run Code Online (Sandbox Code Playgroud)
但这将是一个编译错误:
if (obj instanceof List <Integer>)) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我有几个不同类型的列表,并希望为任何列表实现该方法,无论它们包含什么类型的数据。
那没问题。
(但是,如果您希望该方法仅适用于具有某些类型数据的列表,这将是一个问题……基于简单的运行时类型检查。泛型类型的类型参数在运行时测试中不可用,因此您需要单独测试列表的每个元素......)
1 -请注意,任何ArrayList的也是一个List......因为ArrayList类实现了List接口。
| 归档时间: |
|
| 查看次数: |
11051 次 |
| 最近记录: |