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

标签 java interface

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

/** objects which know their own names, 
 *  e.g. that are indexed in a Map by their name
 */
interface NamedObject
{
   public String getName()
}

但如果有标准的,我宁愿使用它。


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

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

@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 类。在这种情况下,我真正关心的是about 是名称,我可以从中获取更多数据。我可以定义自己的接口(interface),我只是希望能够使用标准接口(interface),因为源和接收器位于不同的 .jar 文件中...

最佳答案

据我所知,Java SE API 中没有。

通用的 NamedObject 是否值得商榷界面有意义。考虑例如 Person类和一个UnixNamedPipe类(class)。两者可以共享相同的 NamedObject接口(interface),但它们的名称实际上具有截然不同的语义。例如,我看不到 Collection<NamedObject> 有意义的情况与Person s 和 UnixNamedPipe秒。

如果你有 PetCat 定义这样一个接口(interface)是有意义的, PetDog也许PetRock类。但是你可能会有一个 Pet已经定义 getName() 的父类(super class)适用于所有宠物。在这种情况下,“名称”的概念不会因一只宠物而改变。

关于java:带有getName() 方法的标准接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380724/

相关文章:

java - 使用 GRAILS(chargify webhooks)解析 FORM-ENCODED 参数

java - 解析从 Salesforce 获取的数据时出现加密错误

java - 为 Jbutton 设置 ActionListener "class"

java - AngularJS + Spring 项目架构

java - 为什么Gson会反序列化1为1.0?

Objective C 中类似 Java 的接口(interface)

java - 为什么不能继承Interface

c# - 每个过滤器的输入/输出类型不同的通用管道

java - 如何从类中隐藏不支持的接口(interface)方法

php - 何时在 PHP 中使用扩展/抽象和实现/接口(interface)