java - instanceof vs equals on defined string that identifies the Class

标签 java

我可以在使用 instanceof 或获取标识类附属物的字段的程序中测试类类型。所以选择介于两者之间

if(myObjec instanceof Something){
} 

if(myObjec.geClassType().equals("Something")){
}

就效率而言,什么是最好的?

geClassType() 是我正在工作的程序对象中存在的一种方法(不是标准的 Java 方法),并且是一种返回带有类名称的字符串的方法。创建对象时,名称作为字段传递

编辑 我在代码的第二个示例中获得的字段并没有准确地标识类,而是一个类别,并且还用于不同的例程,但我也可以将它用于此目的,因为我为每个类别使用了一个特定的对象。 所以我将其报告为 getClassType 以使我的问题更清楚。

最佳答案

instanceof 效率更高,实际有效(因为 geClassType() 不存在)并且可读性更高。

如果 instanceof 是您想要的行为(因为其他答案指出您概述的两种方法之间的行为可能不同),我不确定您为什么会考虑替代方案?

编辑:我应该重申,即使您的上下文中有一个方法确实按照您的描述进行操作,我仍然看不出这样做的充分理由。如果它不能始终按照您期望的方式工作(例如不同包中具有类似名称的类),它可能会引入错误,它可能会更慢,但更重要的是它是非标准的,因此使您的代码可读性大大降低。

简而言之,instanceof 是一个有用的关键字,它完全按照您的要求行事,可靠且可读性强,而且无需大惊小怪。你到底为什么不使用它?!

关于java - instanceof vs equals on defined string that identifies the Class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23257215/

相关文章:

java - 如何使用打印机API在JAVA中格式化文本以进行打印?

java - Windows 将凭据传播到 Java 桌面应用程序

java - JDBC 声明表不存在

java - 如何使按钮不可点击

java - 如何检查输入中的反斜杠?

java - 如何在java中的接口(interface)中使泛型参数可选?

未找到 Java 类异常

java - 获取屏幕名称

java - 读取 USB 数据而不阻塞 UI

java - 在java程序中执行cd和pwd