我试过:
package ro.ex;
import java.io.IOException;
import java.lang.reflect.Type;
class Ex {
public boolean isIns(Object o, Class t) {
o instanceof t;
}
public static void main(String[] args) throws IOException {}
}
上面的代码会引发未知类“t”
我的问题是:如何传递上面的代码。
更新:
以下代码无法通过intellij idea语法检查器
public boolean isIns(Object o, Class<?> t) {
return o instanceof t;
}
所以idea中正确的代码是:
public boolean isIns(Object o, Class<?> t) {
return t.isAssignableFrom(o.getClass());
}
更简单的方法是:
package ro.ex;
import java.io.IOException;
import java.lang.reflect.Type;
class Ex {
public boolean isIns(Object o, Class t) {
return t.isInstance(o);
}
public static void main(String[] args) throws IOException {
Object r = new Ex().isIns("", String.class);
System.out.println(r + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
}
}
最佳答案
如果你写x instanceof t
,那么t
一定是一个类。在您的 isIns
方法中,t
不是类,它是 Class
类型的变量。
但是,类 Class
确实提供了一些方法,您可以使用这些方法来确定某个其他类是否是它的子类:Class.isAssignableFrom(Class)
。所以你可以改变你的方法:
public boolean isIns(Object o, Class t)
{
return t.isAssignableFrom(o.getClass());
}
(我还更改了您的代码,以便将结果返回给调用者。)
关于Java:如何 "instanceof argument",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26587592/