java - 查看对象是否是通过字符串传递的类的实例

标签 java reflection

我想一定有某种方法可以使用反射来做我想做的事情。

我需要能够在运行时获取某个类的字符串,例如:

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/

相关文章:

java - Spring MVC : Ambiguous mapping found with multiple Dispatchers

c# - 如何通过反射调用泛型方法

reflection - 反射(reflection)的词源?

java - 模拟 SWT 打印机

java - 如何根据输入参数从SpringFormController重定向?

java - 如何将字体更改为 Xml 中定义的默认字体?

java - 一个向上滑动的面板,就像具有中间状态的谷歌地图应用程序

java - 我将如何递归地比较两个相同但未知类型的 Java 对象的字段值?

ASP.NET 页面继承

c# - 加载具有相关引用的程序集