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

Jas*_*n S 2 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()
}
Run Code Online (Sandbox Code Playgroud)

但如果它在那里,我宁愿使用标准的.


编辑一个例子 - 我认为这有点像我的问题的红色鲱鱼,所以我特别希望答案建议特定于下列情况的替代品.(我已经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 */
    }
}
Run Code Online (Sandbox Code Playgroud)

在我目前的项目中,我有一个包含三个元素的系统:源,传输方法和接收器.我想从源到接收器获取一些信息,并且我控制两者的实现.遗憾的是,传输方法使用支持ChangeListener的对象,因此所有接收器都获得了一个ChangeEvent可以获取源对象的接收器.

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

ARR*_*RRG 6

据我所知,不是在Java SE API中.

通用NamedObject接口是否有意义是有争议的.考虑例如一个Person类和一个UnixNamedPipe类.两者都可以共享相同的NamedObject接口,但它们的名称实际上具有非常不同的语义.我不能看到一个案例,其中有s和s Collection<NamedObject>两者都有意义. PersonUnixNamedPipe

如果你有PetCat,PetDog也许是PetRock类,那么定义这样的接口是有意义的.但是你可能会有一个Pet已经getName()为所有宠物定义的超级课程.在这种情况下,"名称"的概念不会从一只宠物变成另一只宠物.