Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较对象类型_Java_Types - Fatal编程技术网

Java 比较对象类型

Java 比较对象类型,java,types,Java,Types,我不知道如何对newEntry执行类型检查,我想确保它是MyTable类型(不创建MyTable的对象) 我的问题是: newEntry.getClass() == MyTable.getClass(). 注意:MyTable是一个类名,而不是一个对象。您可以使用MyTable.class检索类名。基本上您需要的是: 易识别 看看: 因此,在您的情况下,您希望: MyTable.class.isAssignableFrom(newEntry.getClass()) instanceof是你的

我不知道如何对newEntry执行类型检查,我想确保它是MyTable类型(不创建MyTable的对象)

我的问题是:

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()))