Как проверить, является ли данный объект экземпляром имени класса, указанного в строке? - PullRequest
3 голосов
/ 07 июня 2011

У меня есть следующие переменные

MyObj myObj = new MyObj();
String myString = "myPackage.MyObj";

, где MyObj выглядит так

package myPackage;

class MyObj {
    private String one;
    private String two;
}

Как проверить, является ли myObj экземпляром полного имени класса?как представлено строкой myString?

Ответы [ 2 ]

14 голосов
/ 07 июня 2011

Для этого вы можете использовать Class#isInstance().

if (Class.forName(myString).isInstance(myObj)) {
   // myObj is an instance of the class as specified by myString.
}
0 голосов
/ 07 июня 2011

Не уверен, что правильно вас понимаю, но это может вам помочь:

Number n = 42;      //Integer, try 42L (Long)
String type = "java.lang.Integer";
//if(n instanceof type)  //?!?
if(Class.forName(type).isAssignableFrom(n.getClass())) {
    //...
}
...