Java SearchableByName接口始终返回null
我的目标是搜索一个多树结构,以查看哪个项目与我要查找的名称匹配。为此,我在需要搜索的每个类中实现了一个名为SearchByName的接口 我的数据包含的方式是,我有一个名为parties的ArrayList,由Party对象组成,每个Party对象在一个名为cave的对象中都有一个名称,每个Party都有一个名为members的ArrayList,每个Party对象都有一个名称,每个生物都有一个叫做人工制品的数组列表,由人工制品对象组成,每个人工制品对象都有一个名字 每次搜索时,即使应该有匹配项,搜索也会返回null 这是我执行搜索的代码:Java SearchableByName接口始终返回null,java,search,interface,Java,Search,Interface,我的目标是搜索一个多树结构,以查看哪个项目与我要查找的名称匹配。为此,我在需要搜索的每个类中实现了一个名为SearchByName的接口 我的数据包含的方式是,我有一个名为parties的ArrayList,由Party对象组成,每个Party对象在一个名为cave的对象中都有一个名称,每个Party都有一个名为members的ArrayList,每个Party对象都有一个名称,每个生物都有一个叫做人工制品的数组列表,由人工制品对象组成,每个人工制品对象都有一个名字 每次搜索时,即使应该有匹配项
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();
}
这是第三方正在实施的接口:
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;
}
这是正在生物中实现的接口:
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;
}
最后,我在工件中实现了接口:
public SearchableByName searchByName ( String n ) {
return ( getName() == n ) ? this : null;
}
这是我第一次尝试搜索类,而不是在顶层做任何事情 更改以下行:
getName().equals(n);
但是,请确保getName从不为null,如果它可以为null,请进行null检查。如果(getName()==n)
是您的问题。。。