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

时间:2015-11-30 17:25:18

标签: java oop instanceof

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

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;
}

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

1 个答案:

答案 0 :(得分:9)

您没有 - public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // TODO Auto-generated method stub String selectedItem = parent.getItemAtPosition(pos).toString(); TodoManager.getInstance().getTodo(pos).setStatus(selectedItem); // more code 运算符始终将类型的名称作为其第二个操作数。但是,您可以改为使用Class.isInstance 方法

instanceof

注意缺少if / else - 只要你有bool = c.isInstance(a); 之类的东西,就可以折叠它。但是,在当前代码中,循环后if (condition) return true; else return false;的值将仅取决于数组的 last 元素,因为您在每次迭代时都会重新分配它。

您可能实际想要:

bool

(使用Java 8,您可以使用流和boolean bool = false; for (Class c : array){ if (c.isInstance(a)) bool = true; } } 来实现,但这是另一回事。)