java Class.forName 实例化对象,并调用类中相应的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Class.forName 实例化对象,并调用类中相应的方法相关的知识,希望对你有一定的参考价值。

service.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<Actions>
<action>com.action.Test2</action>
</Actions>

package com.action
public class Test2
public void sayHello()
System.out.println("Hello World!");



public class Test
public static void main(String[] args) throws Exception
SAXReader reader=new SAXReader();
Document document=reader.read(new File("services.xml"));
Element root=document.getRootElement();
Element action=root.element("Actions");
String action=action.elementText("action");
Class c=Class.forName(action);



Test 中 通过Class.forName() 加载了 Test2 类,那么怎么实列化一个Test2对象,并调用Test2中的方法?

参考技术A 看有没有参数,无参就直接c.newInstance();
有参数就用构造器的newInstance(参数);
调用方法的话先用c.getMethod(,)得到方法 ,再用得到的method执行
针对你这个具体的,代码就是
Class c=Class.forName("com.action.Test2");
Object test = c.newInstance();
Method method = c.getMethod("sayHello", null);
method.invoke(test, null);本回答被提问者采纳
参考技术B Class test2 = Class.forName(action);
Object o = test2.newInstance();

以上是关于java Class.forName 实例化对象,并调用类中相应的方法的主要内容,如果未能解决你的问题,请参考以下文章

动态加载类并实例化对象 —— newInstance

类实例化原理

java 反射

Java反射

java反射-反射实例化对象-反射获得构造方法-反射获得普通方法-获得属性

newInstance()和new()