gpt4 book ai didi

java - 检查列表中子类的实例并返回对象

转载 作者:行者123 更新时间:2023-12-01 06:11:24 24 4
gpt4 key购买 nike

我有两个对象 A 和 B。其中 B 是 A 的扩展。

我有一个可以包含 As 和 Bs 的列表

我有一个类似的方法:

B findB()
{
for (int i = 0; i < ABlist.size(); i++)
{
if(ABlist.get(i) instanceof B)
{
return ABlist.get(i);
}
else{return null;}
}
return null;
}

它应该查看列表中的所有对象,如果它是 B 的实例,则返回该对象。但是我收到了不兼容类型错误,因为 A 无法转换为 B。

解决这个问题的最佳方法是什么?

最佳答案

您可以向类及其子类添加一个方法,而不是执行 instanceof ,该方法为特定子类返回 this ,为其他子类返回 null 。像这样:

class A {
public A get() {
return null;
}
}
class B extends A {
@Override
public A get() {
return this;
}
}
...
B findB() {
for (A a : ABlist) {
if (a.get() != null) {
return (B) a;
}
}
return null;
}

这个想法是尽可能避免使用instanceof。该运算符是语言的一部分,但广泛使用反射和 instanceof 可能会使您的应用程序变慢且难以维护。

关于java - 检查列表中子类的实例并返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34093915/

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