Java:如何"instanceof参数"

ror*_*oco 1 java class instanceof

我试过了:

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 {}
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将引发未知类"t"

我的问题是:如何传递上述代码.

更新:

以下代码无法通过intellij构思语法检查器

public boolean isIns(Object o, Class<?> t) {
    return o instanceof t;
}
Run Code Online (Sandbox Code Playgroud)

所以正确的代码是:

public boolean isIns(Object o, Class<?> t) {
    return t.isAssignableFrom(o.getClass());
}
Run Code Online (Sandbox Code Playgroud)

更简单的方法是:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

Hoo*_*pje 6

如果你写x instanceof t,那么t必须是一个班级.在您的isIns方法中,t不是类,它是类型的变量Class.

Class但是,该类确实提供了一些方法,您可以使用这些方法来决定其他类是否是它的子类:Class.isAssignableFrom(Class).所以你可以改变你的方法:

public boolean isIns(Object o, Class t)
{
    return t.isAssignableFrom(o.getClass());
}
Run Code Online (Sandbox Code Playgroud)

(我还更改了你的代码,以便将结果返回给调用者.)