zoukankan      html  css  js  c++  java
  • 四 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次方值
        //用反射来调用此方法
    }
  • 相关阅读:
    [BZOJ2882] 工艺
    团队项目成员和题目
    软件工程课堂作业(最小数组和)
    每周进度条(第六周)
    梦断代码阅读笔记01
    每周进度条(第五周)
    每周进度条(第四周)
    软件工程个人作业03
    软件工程个人作业02
    每周进度条(第三周)
  • 原文地址:https://www.cnblogs.com/wlxslsb/p/10784876.html
Copyright © 2011-2022 走看看