zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    20171017/20171018
    BZOJ[3193] [JLOI2013]地形生成
    BZOJ[1009] [HNOI2008]GT考试
    BZOJ[4767] 两双手
    BZOJ[4013] [HNOI2015]实验比较
    BZOJ[1925] [Sdoi2010]地精部落
    20171015 杂题
    20171015
    20171014
    USACO 2015 December Contest, Gold Problem 3. Bessie's Dream
  • 原文地址:https://www.cnblogs.com/warrior4236/p/5699511.html
Copyright © 2011-2022 走看看