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()仍然没有意义,因为这不是它的默认值,也不是它的预期行为;此外,它在每个类中都可用,但他无法检查它是否在特定对象中实现了该语义。