java:使用getName()方法的标准接口?

java:使用getName()方法的标准接口?,java,interface,Java,Interface,是否有一个带有返回字符串的getName()方法的标准Java接口?我不断发现我必须做出自己的决定: /** objects which know their own names, * e.g. that are indexed in a Map by their name */ interface NamedObject { public String getName() } 但如果有标准的,我宁愿用标准的 编辑一个例子——我认为这有点像是在转移我的问题的注意力,所以我特别想

是否有一个带有返回字符串的
getName()
方法的标准Java接口?我不断发现我必须做出自己的决定:

/** objects which know their own names, 
 *  e.g. that are indexed in a Map by their name
 */
interface NamedObject
{
   public String getName()
}
但如果有标准的,我宁愿用标准的


编辑一个例子——我认为这有点像是在转移我的问题的注意力,所以我特别想得到答案,建议针对以下情况的备选方案。(我曾多次遇到对
NamedObject
接口的需求,所以我希望它是标准库中的东西。)

但由于您要求提供一些背景背景背景,这里是:

@Override public void stateChanged(ChangeEvent e) {
    Object obj = e.getSource();             
    if (obj instanceof NamedObject)
    {
        String name = ((NamedObject)obj).getName();
        /* do something based on object's name */
    }
}
在我当前的项目中,我有一个包含三个元素的系统:源、传输方法和接收器。我想从源到接收器获取一些信息,并控制两者的实现。不幸的是,传输方法在使用支持ChangeListener的对象时被卡住了,因此所有接收者都会得到一个
ChangeEvent
,我可以用它来获得一个源对象


所以我必须在我的源和接收者之间使用隐含的共享语义,也就是说,有一个共同的理解,在ChangeEvent中传递的源对象属于类X,在这里我可以选择类X。在这种情况下,我真正关心的是名称,我可以从中获得额外的数据。我可以定义自己的接口,我只是希望能够使用一个标准接口,因为源和接收器在不同的.jar文件中…

没有java API提供的任何东西。当您这样做时,使用它并用这个接口实现您自己的类。

java中的所有对象都是从Object.class继承的。 有一个toString()方法,通常用于获取对象的代表性名称

您可以重新实现此方法:

@Override
public String toString() {      
    return "The name of this Object";
}

据我所知,不是在JavaSEAPI中

通用的
NamedObject
接口是否有意义仍有争议。例如,考虑一个<代码>人>代码>类和一个代码> UNIXNAMEDPENT/<代码>类。两者可以共享相同的
NamedObject
接口,但它们的名称实际上具有截然不同的语义。例如,我看不出一种情况,即同时使用
Person
s和
UnixNamedPipe
s进行
Collection


如果您有
PetCat
PetDog
或者
PetRock
类,那么定义这样一个接口是有意义的。但是您可能会有一个
Pet
超类,它已经为所有宠物定义了
getName()
。在这种情况下,“名称”的概念不会从一只宠物改变到另一只宠物。

据我所知,在Java SE API中不会。您希望如何使用这种方法?展示一些示例。“public String toString():返回对象的字符串表示形式。”它不是用来给出类的名称,也不是默认行为。我想他想要的是对象的名称,而不是类的名称。他将他的接口称为“NamedObject”,但使用toString()仍然没有意义,因为这不是它的默认值,也不是它的预期行为;此外,它在每个类中都可用,但他无法检查它是否在特定对象中实现了该语义。