gpt4 book ai didi

java - SearchableByName 接口(interface)不断返回 null

转载 作者:行者123 更新时间:2023-12-01 14:21:08 25 4
gpt4 key购买 nike

我的目标是搜索多树结构以查看哪个项目与我要查找的名称匹配。我通过在需要搜索的每个类中实现一个名为 SearchByName 的接口(interface)来实现此目的。

我的数据的包含方式是,我有一个名为 party 的 ArrayList,由 Party 对象组成,每个对象在名为 Cave 的对象中都有一个名称,每个 Party 有一个名为 Members 的 ArrayList,由 Creature 对象组成,每个对象都有一个名称,每个生物都有一个名为artifacts的ArrayList,由Artifact对象组成,每个对象都有一个名称;

每次搜索时,即使应该有匹配,搜索也会返回 null。

这是我执行搜索的代码:

for ( Party p : SorcerersCave.theCave.parties ){
SearchableByName foundItem = p.searchByName( name );
if ( foundItem != null ) {
GenerateInterface.theGame.printOutput( "\t" + foundItem );
} else {
GenerateInterface.theGame.printOutput( "Item NOT FOUND" );
}
break;
}

这是我正在实现的界面:

interface SearchableByName {
public SearchableByName searchByName (String name );
public String getName();

}

这是在 Party 中实现的接口(interface):

public SearchableByName searchByName ( String n ) {
if ( getName() == n ) {
return this;
} else {
for ( Creature c : members ) {
SearchableByName found = c.searchByName( n );
if ( found != null ) {
return found;
}
}
}
return null;
}

这是在 Creature 中实现的接口(interface):

public SearchableByName searchByName ( String n ) {
if ( getName() == n ) {
return this;
} else {
for ( Artifact a : artifacts ) {
SearchableByName found = a.searchByName( n );
if ( found !=null ) {
return found;
}
}
}
return null;
}

最后我在 Artifact 中实现了该接口(interface):

public SearchableByName searchByName ( String n ) {
return ( getName() == n ) ? this : null;
}

这是我第一次尝试搜索类而不是在顶层做所有事情。

最佳答案

更改以下行:

getName().equals(n);

但是请确保 getName 永远不会为 null,如果它可以为 null,请进行 null 检查。

关于java - SearchableByName 接口(interface)不断返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552043/

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