将类作为参数传递给java中的方法

tor*_*tor 10 java instanceof argument-passing

我正在编写一个方法,我想将一个类传递给一个方法,其中一部分代码包括检查对象是否属于某种类型.这就是我想要的(但显然不起作用):

private static class MyClass1 { /***/ }
private static class MyClass2 { /***/ }

private void someFunc() {
    /* some code */
    methodName(MyClass1);
    methodName(MyClass2);
}


private void methodName(Class myClass) {
    Object obj;
    /* Complicated code to find obj in datastructure */
    if (obj instanceof myClass) {
        /* Do stuff */
    }
}
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何提示?谢谢!

Rya*_*art 20

Class有一个isInstance()方法和一个isAssignableFrom()方法来检查这样的东西.最接近您要找的是:

if (myClass.isInstance(obj)) {
Run Code Online (Sandbox Code Playgroud)

更新:从您的注释中,您希望将类的名称传递给方法,并检查是否可以将某些内容分配给该类.唯一的方法是将类名作为String传递,然后加载该类并使用上述方法之一.例如(省略异常处理):

private void methodName(String className) {
    Class myClass = Class.forName(className);
    Object obj;
    /* Complicated code to find obj in datastructure */
    if (myClass.isInstance(obj)) {
        /* Do stuff */
    }
}
Run Code Online (Sandbox Code Playgroud)