我想一定有某种方法可以使用反射来做我想做的事情。
我需要能够在运行时获取某个类的字符串,例如:
string s = "mypackage.MySuperClass"
然后我可能有某种类型的对象。它可能是以下之一:
mypackage.MySuperClass obj = new mypackage.MySuperClass();
或
mypackage.MySubClass obj2 = new mypackage.MySubClass();
或
someotherpackage.SomeOtherClass obj3 = new someotherpackage.SomeOtherClass();
我需要做的是查看一个对象(其类型在运行时确定)是否等于字符串 s(它也在运行时通过完全不同的方式确定)。
在上述情况下,我希望 obj 和 obj2 是与 s 相同的类型(因为 MySubClass 是 MySuperClass 的子类),而 obj3 则不是。
在 Java 中有没有一种简单的方法可以做到这一点?可能是使用 instanceOf 的东西?
最佳答案
听起来你想要这样的东西:
boolean isInstance(Object o, String className) {
try {
Class clazz = Class.forName(className);
return clazz.isInstance(o);
} catch (ClassNotFoundException ex) {
return false;
}
}
或者您可以反过来做 - 取 o 的类 (o.getClass()
),找到所有祖先类并将它们的名称与 className
进行比较。
关于java - 查看对象是否是通过字符串传递的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170519/