有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用带有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]){}
                                                                     ^

共 (5) 个答案

  1. # 1 楼答案

    您可以使用Class.isAssignableFrom()

    从javadoc:

    Determines if the class or interface represented by this Class object is either the same as, or is a superclass or superinterface of, the class or interface represented by the specified Class parameter.

  2. # 2 楼答案

    您可以尝试以下操作:

    Class cA=arrayA[c].getClass();
    Class cB=arrayB[c].getClass();
    if (cA.isAssignableFrom(cB) {
       .... your code Here
    }
    

    通过这种方式,您将使用反射API动态加载数组中对象的类,并验证arrayA中的类是否是arrayB中对象的实例(作为直接实例或子类)

  3. # 3 楼答案

    您可以使用Class#isInstance

    if (arrayB[c].getClass().isInstance(arrayA[c])){
        // do something
    }
    
  4. # 4 楼答案

    如果您希望相应的元素具有完全相同的类型,那么以下内容就足够了

        if (arrayA[c].getClass() == arrayB[c].getClass()) {}
    

    (注意==equals对于Class对象是等价的。)

    如果子类型是可接受的,则改用Class.isAssignableFrom(Class)方法。请注意,此方法是不对称的:

    c1.isAssignableFrom(c2) does not imply that c2.isAssignableFrom(c1)


    Is it possible to use instanceof with two elements in two different arrays?

    不允许。Java语言不允许这样做

    instanceof运算符根据类型测试对象,右边的操作数必须是TypeReference;i、 e.类型或类型变量。它不能是普通变量或表达式;它们在该位置的语法上是无效的

  5. # 5 楼答案

    当您使用instanceof时,您需要在编译时知道“B”的类,因此如果元素包含类名,那么您可以在其他情况下使用它

    还要补充的是instanceof只能与引用类型一起使用,而不能与基元类型一起使用