有 Java 编程相关的问题?

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

java如何将变量参数传递给instanceof?

我正在寻找一种将参数c传递给instanceof的方法,因为我需要循环通过一个数组,如代码中所示,但是编译器返回错误“unknown class c”,我如何解决这个问题

Class0 a = new Class0();
boolean bool;
Class[] array = new Class[]{Class0.class, Class1.class};
for(Class c : array){
   if(a instanceof c)
       bool = true;
   else
      bool = false;
}

我知道我可以使用.getClass()。getSimpleName()并检查它是否等于字符串数组中的元素,但我想更好地了解如何使用关键字instanceof及其工作原理


共 (1) 个答案

  1. # 1 楼答案

    你不知道instanceof操作符总是将类型的名称作为它的第二个操作数。但是,您可以使用^{}方法

    bool = c.isInstance(a);
    

    注意没有if/else——任何时候只要有if (condition) return true; else return false;之类的东西,就可以折叠它。然而,在当前代码中,循环后bool的值将只取决于数组的最后一个元素,因为每次迭代都要重新分配它

    你可能想要:

    boolean bool = false;
    for (Class c : array){
       if (c.isInstance(a))
           bool = true;
       }
    }
    

    (使用Java8,您可以使用streams和anyMatch实现这一点,但这是另一回事。)