• java通过反射获取调用变量以及方法


    一:反射概念

    可以通过Class类获取某个类的成员变量以及方法,并且调用之。

    二:通过反射获取方法、变量、构造方法

     1 @Test
     2     // 通过反射获取类定义的方法
     3     public void testMethod() throws Exception {
     4         @SuppressWarnings("rawtypes")
     5         Class clazz = Class.forName("java.lang.String");
     6         Method[] m = clazz.getDeclaredMethods();
     7         for (int i = 0; i < m.length; i++) {
     8             System.out.println(m[i].getName() + " " + m[i].getDeclaringClass());
     9         }
    10     }
    11 
    12     @Test
    13     // 通过反射获取类定义的变量
    14     public void testField() throws Exception {
    15         @SuppressWarnings("rawtypes")
    16         Class clazz = Class.forName("java.lang.String");
    17         Field[] fields = clazz.getFields();
    18         for (Field f : fields) {
    19             System.out.println(f.getName());
    20         }
    21     }
    22 
    23     @Test
    24     // 通过反射获取类定义的构造方法
    25     public void testConstructor() throws Exception {
    26         @SuppressWarnings("rawtypes")
    27         Class clazz = Class.forName("java.lang.String");
    28         @SuppressWarnings("rawtypes")
    29         Constructor[] cons = clazz.getConstructors();
    30         for (@SuppressWarnings("rawtypes")
    31         Constructor c : cons) {
    32             System.out.println(c + " " + c.getDeclaringClass());
    33         }
    34     }

    三:通过反射调用类定义的方法

     1 @Test
     2     // 通过反射调用类定义的方法
     3     public void testInvokeMethod() throws Exception {
     4         Class clazz = Class.forName("java.lang.String");
     5         // 定义参数类型
     6         Class[] params = new Class[1];
     7         params[0] = String.class;
     8         Method m = clazz.getDeclaredMethod("indexOf", params);
     9         // 设置参数
    10         Object[] p = new Object[1];
    11         p[0] = "e";
    12         Integer s = (Integer) m.invoke("helloworld!", p);
    13         System.out.println(s);
    14     }
  • 相关阅读:
    centos从安装到环境配置
    PHP获取上个月、下个月、本月的日期
    js判断是哪种浏览器和阻止页面加载
    jquery中attr和prop的区别
    php curl 提交 总结
    合并二维数组,并计算重复字段的平均值
    检测端口和URL状态码判断启动服务
    curl-URL语法传输工具
    HAproxy 2.1.3源码 编译问题
    HAproxy 负载均衡器
  • 原文地址:https://www.cnblogs.com/warrior4236/p/5699511.html
Copyright © 2020-2023  润新知