使用带有instanceof的数组元素的java
可以将instanceof与两个不同数组中的两个元素一起使用吗
例如:if(arrayA[c] instanceof arrayB[c]){}
我尝试了上述代码,但出现以下错误:
error: ']' expected: if(arrayA[c] instanceof arrayB[c]){}
^
error: ';' expected: if(arrayA[c] instanceof arrayB[c]){}
^
error: illegal start of expression: if(arrayA[c] instanceof arrayB[c]){}
^
# 1 楼答案
您可以使用Class.isAssignableFrom()
从javadoc:
# 2 楼答案
您可以尝试以下操作:
通过这种方式,您将使用反射API动态加载数组中对象的类,并验证arrayA中的类是否是arrayB中对象的实例(作为直接实例或子类)
# 3 楼答案
您可以使用Class#isInstance:
# 4 楼答案
如果您希望相应的元素具有完全相同的类型,那么以下内容就足够了
(注意
==
和equals
对于Class
对象是等价的。)如果子类型是可接受的,则改用
Class.isAssignableFrom(Class)
方法。请注意,此方法是不对称的:不允许。Java语言不允许这样做
instanceof
运算符根据类型测试对象,右边的操作数必须是TypeReference
;i、 e.类型或类型变量。它不能是普通变量或表达式;它们在该位置的语法上是无效的# 5 楼答案
当您使用
instanceof
时,您需要在编译时知道“B”的类,因此如果元素包含类名,那么您可以在其他情况下使用它否还要补充的是
instanceof
只能与引用类型一起使用,而不能与基元类型一起使用