gpt4 book ai didi

Java instanceof 实现/扩展

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:43 25 4
gpt4 key购买 nike

instanceof 究竟是如何工作的?当我有一个相互扩展和实现的对象层次结构时,是否可以通过这两条线成为某物的实例?

例如我想知道我的对象是 ListArrayList 还是 Collection 的实例?

我检查了这棵树,http://docs.oracle.com/javase/6/docs/api/java/util/package-tree.html

当然,它们似乎都属于 Object ,但我认为我需要的是 AbstractCollection 甚至是普通的 Collection ,因为似乎是等级最高的。

当我仅针对 Collection 检查一个对象以涵盖所有这 3 个类时,我会没事吗?

最佳答案

Will I be fine, when I check an object against only Collection to cover all those 3 classes?

是的,instanceof Collection 将为 Collection 接口(interface)的所有实现(直接或间接)返回 true。

在极少数情况下您不想这样做,则必须使用反射。例如,Class#getDeclaredClasses将为您提供该类直接扩展/实现的所有类和接口(interface)的列表。

一旦您知道某个东西是一个集合,您就可以强制转换它以访问它的方法(如 iterator):

  if (myObject instanceof Collection){
Collection<?> c = (Collection<?>) myObject;
for (Object o: c){
// do something with every element in the collection
}
}

关于Java instanceof 实现/扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com