我可以在使用 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/