如何在Java中检查对象是否为集合类型?
2022-08-31 12:05:46
通过使用java反射,我们可以很容易地知道一个对象是否是一个数组。判断对象是否是集合(Set,List,Map,Vector...)的最简单方法是什么?
通过使用java反射,我们可以很容易地知道一个对象是否是一个数组。判断对象是否是集合(Set,List,Map,Vector...)的最简单方法是什么?
if (x instanceof Collection<?>){
}
if (x instanceof Map<?,?>){
}
更新:这里有两种可能的情况:
您正在确定对象是否为集合;
您正在确定类是否为集合。
解决方案略有不同,但原理相同。您还需要定义究竟是什么构成了“集合”。实现其中一个或将涵盖 Java 集合。Collection
Map
解决方案 1:
public static boolean isCollection(Object ob) {
return ob instanceof Collection || ob instanceof Map;
}
解决方案 2:
public static boolean isClassCollection(Class c) {
return Collection.class.isAssignableFrom(c) || Map.class.isAssignableFrom(c);
}
(1)也可以按(2)实现:
public static boolean isCollection(Object ob) {
return ob != null && isClassCollection(ob.getClass());
}
我不认为任何一种方法的效率都会与另一种方法有很大不同。