我正在加载一个带有以下语句的类:
Class classToLoad = Class.forName("com.somePackage.SomeotherPackage.classname" );
后来我使用反射来获取这个类的方法。现在要使用 methodname.invoke() 函数调用方法,我需要加载类的对象。因此我想创建加载类的对象。我尝试这样做:
Object obj = classToLoad.newInstance();
但问题是这样我没有加载类的对象,但我得到了 Object 类的对象。
现在,如果我想调用加载类的函数,我会这样做:
methodName.invoke(obj);
它抛出一个异常:
java.lang.IllegalArgumentException:对象不是声明类的实例
有人可以帮忙吗?
问题更新:
问题是我需要分配的左侧是不同的类类型,并且该类类型将在运行时决定
对于以下声明:
对象实例 = clazz.newInstance();
“instance”应该是“clazz”类型而不是“Object”类。
我怎样才能做到这一点?