是否可以在两个不同的数组中使用带有两个元素的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]){}
^
答案 0 :(得分:4)
答案 1 :(得分:3)
当您使用instanceof
时,您需要知道" B"在编译时,如果元素包含类名,那么你可以使用它,否则否
另外要添加instanceof
只能用于引用类型,而不是基本类型
答案 2 :(得分:2)
您可以尝试以下操作:
Class cA=arrayA[c].getClass();
Class cB=arrayB[c].getClass();
if (cA.isAssignableFrom(cB) {
.... your code Here
}
这样,您将使用Reflection API动态加载数组中对象的类,并验证arrayA中的对象是否是arrayB中的实例(作为直接实例或子类)。 / p>
答案 3 :(得分:1)
如果您希望相应的元素具有完全相同的类型,则以下内容就足够了。
if (arrayA[c].getClass() == arrayB[c].getClass()) {}
(请注意,==
和equals
与Class
个对象相同。)
如果可以接受子类型,请改用Class.isAssignableFrom(Class)
方法。请注意,此方法是不对称的:
c1.isAssignableFrom(c2)
并不意味着c2.isAssignableFrom(c1)
是否可以在两个不同的数组中使用带有两个元素的instanceof?
没有。 Java语言不允许它。
instanceof
运算符针对类型测试对象,右手操作数必须是TypeReference
;即类型或类型变量。它不能是普通的变量或表达;他们在那个位置语法上无效。
答案 4 :(得分:1)
您可以使用Class#isInstance:
if (arrayB[c].getClass().isInstance(arrayA[c])){
// do something
}