四 Struts2 反射实现

package com.myreflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectDemo {
    public static void main(String[] args) throws Exception {
        //1.假设我们已经解析struts.xml拿到com.action.LoginAction字符串
        String path = "com.action.LoginAction";
        //2.用反射原理来构造此类对象
        Class c = Class.forName(path);
        //获取所有属性
        Field[] fs = c.getFields();
        Field[] fs2 = c.getDeclaredFields();
        for (int i = 0; i < fs.length; i++) {
            System.out.println(fs[i].getName());
        }
        for (int i = 0; i < fs2.length; i++) {
            System.out.println("===="+fs2[i].getName());
        }
        
        //获取所有方法
        Method[] ms = c.getDeclaredMethods();
        for (int i = 0; i < ms.length; i++) {
            System.out.println("方法名="+ms[i].getName());
        }
        
        //怎么执行方法
        //第一步:构造类的对象,获取类型的构造方法
        //c.getConstructor(new Class[]{String.class,Integer.class});
        Constructor cons = c.getConstructor(new Class[]{});
        //通过构造器构造实例
        //cons.newInstance(new Object[]{"admin",123});
        Object obj = cons.newInstance(new Object[]{});
        
        //2.执行方法   获取类型中execute方法
        Method exe = c.getDeclaredMethod("execute", new Class[]{});
        Object result = exe.invoke(obj, new Object[]{});
        
        System.out.println("test方法执行的返回结果是:"+result);
    }
    
    public ReflectDemo() {
        
    }
    
    public ReflectDemo(String name,int num) {
        
    }
    
    //写一个类,写一个方法完成两个数求幂值  x的n次方值
    //用反射来调用此方法
}
原文地址:https://www.cnblogs.com/wlxslsb/p/10784876.html