Java 比较对象类型
我不知道如何对newEntry执行类型检查,我想确保它是MyTable类型(不创建MyTable的对象) 我的问题是:Java 比较对象类型,java,types,Java,Types,我不知道如何对newEntry执行类型检查,我想确保它是MyTable类型(不创建MyTable的对象) 我的问题是: newEntry.getClass() == MyTable.getClass(). 注意:MyTable是一个类名,而不是一个对象。您可以使用MyTable.class检索类名。基本上您需要的是: 易识别 看看: 因此,在您的情况下,您希望: MyTable.class.isAssignableFrom(newEntry.getClass()) instanceof是你的
newEntry.getClass() == MyTable.getClass().
注意:MyTable是一个类名,而不是一个对象。您可以使用
MyTable.class
检索类名。基本上您需要的是:
易识别
看看:
因此,在您的情况下,您希望:
MyTable.class.isAssignableFrom(newEntry.getClass())
instanceof
是你的朋友:
if (table.equals("MyTable") && newEntry instanceof MyTable)
它实际上是isAssignableFrom
方法的简写,但与之相比,它更容易键入:)
在本例中,如果newEntry
是MyTable
的实例,或者newEntry
是MyTable
的超类的实例,则条件为true
将您的声明更改为以下内容以使其正常工作:
if (table.equals("MyTable") && newEntry instanceof MyTable)
您还可以使用
isAssignableFrom()
来比较它们。您可能希望这样做的原因是,对于instanceof
,您必须在编译程序之前知道要比较的类。使用isAssignableFrom()
,您可以在运行时更改要与之进行比较的类
if (table.equals("MyTable") && MyTable.class.isAssignableFrom(newEntry.getClass()))
使用运算符。。有关更多文档,请参阅JLS
检查一下这个著名的答案newEntry instanceof Table?@syb0rg正在向3000点进发:D@syb0rg谢谢你,让我的一天完整了:)现在做清理:)@JHollanti,因为答案至少需要30个字符hanks,这就完成了任务。然而,我想知道为什么instanceOf不起作用。这是我的第一个方法。这与你首先提到的是哪门课,最后提到的是哪门课有关。例如,newEntry.getClass().isAssignableFrom(MyTable.class)可能也不适合您。尝试翻转参数,instanceof也应该开始工作。
if (table.equals("MyTable") && newEntry instanceof MyTable)
if (table.equals("MyTable") && MyTable.class.isAssignableFrom(newEntry.getClass()))