是否有一个标准的 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/