1

メソッドの渡された引数に基づいて instanceof を使用する方法はありますか? 例

doSomething(myClass.class); /* I would like to call this also with other classes */

public void doSomething(/*generic parameter that accepts all classes, not just myClass */) {
  if (myObject instanceOf /* the generic parameter */ == true) {...}
}

myClass.class を使用してメソッドを呼び出すこともありますが、someOtherClass.class を使用してメソッドを呼び出したい場合もあります。ただし、if 条件は変更したくありません。それは可能ですか?もしそうなら、どのように?:)

ありがとう

4

2 に答える 2

6

Class.isInstance()メソッドを探しています。

public void doSomething(Class<?> c, Object myObject) {
    if (c.isInstance(myObject)) {...}
}
于 2012-12-07T17:30:10.817 に答える
2

私が知る限り、これはそれを行う方法です:

public static <T> boolean doInstanceOf(Object object,Class<T> clz) {
        return clz.isInstance(object);
    }

使用法:

System.out.println(doInstanceOf(myObject,MyClass.class));
于 2012-12-07T17:30:38.443 に答える