gpt4 book ai didi

java - 如何在运行时检查子类是否是类的实例?

转载 作者:IT老高 更新时间:2023-10-28 13:51:30 26 4
gpt4 key购买 nike

在一个 android 应用程序测试套件中,我有一个像这样的类,其中 B 是一个 View :

public class A extends B {
... etc...
}

现在我有一个 View 对象列表,其中可能包含 A 对象,但在这种情况下,我只关心它们是否是 B 的子类或“实例”。我想做类似的事情:

ArrayList<View> viewList = getViews();
Iterator<View> iterator = viewList.iterator();
while (iterator.hasNext() && viewList != null) {
View view = iterator.next();
if (view.getClass().isInstance(B.class)) {
// this is an instance of B
}
}

问题在于,当 if 遇到 A 对象时,它不会评估为“B 的实例”。有没有办法做 isSubclassOf 之类的?

最佳答案

您必须仔细阅读此方法的 API。有时你很容易感到困惑。

是:

if (B.class.isInstance(view))

API 说:确定 指定的对象 (参数) 是否与 this Class 表示的对象分配兼容(您正在调用该方法的类对象)

或:

if (B.class.isAssignableFrom(view.getClass()))

API 说:确定此 Class object 表示的类或接口(interface)是否与 指定的 Class 表示的类或接口(interface)相同,或者是其父类(super class)或超接口(interface)参数

或(不带反射和推荐的):

if (view instanceof B)

关于java - 如何在运行时检查子类是否是类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410304/

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