Java SearchableByName接口始终返回null

Java SearchableByName接口始终返回null,java,search,interface,Java,Search,Interface,我的目标是搜索一个多树结构,以查看哪个项目与我要查找的名称匹配。为此,我在需要搜索的每个类中实现了一个名为SearchByName的接口 我的数据包含的方式是,我有一个名为parties的ArrayList,由Party对象组成,每个Party对象在一个名为cave的对象中都有一个名称,每个Party都有一个名为members的ArrayList,每个Party对象都有一个名称,每个生物都有一个叫做人工制品的数组列表,由人工制品对象组成,每个人工制品对象都有一个名字 每次搜索时,即使应该有匹配项

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

我的数据包含的方式是,我有一个名为parties的ArrayList,由Party对象组成,每个Party对象在一个名为cave的对象中都有一个名称,每个Party都有一个名为members的ArrayList,每个Party对象都有一个名称,每个生物都有一个叫做人工制品的数组列表,由人工制品对象组成,每个人工制品对象都有一个名字

每次搜索时,即使应该有匹配项,搜索也会返回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();
}

这是第三方正在实施的接口:

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)
是您的问题。。。