zoukankan      html  css  js  c++  java
  • java反射,简单demo

    直接上码

    //获取方法、属性、构造函数时加 Declared 表示获取本类全部的,不分修饰符;不加 Declared 表示获取从父类继承的和本类公共的
    //获取 First 类的无参构造函数
    Constructor c = First.class.getDeclaredConstructor();
    //跳过安全检查
    c.setAccessible(true);
    //获取 First 对象
    First first = (First) c.newInstance();
    //获取 First 类对象
    Class clazz = First.class;
    //获取本类中所有的方法
    for (Method method : clazz.getDeclaredMethods()) {
        //输出方法名
        System.out.println(method.getName());
        //跳过安全检查
        method.setAccessible(true);
        //执行该方法,需要传入当前类的对象
        method.invoke(first);
    }
    for (Field field : clazz.getDeclaredFields()) {
        System.out.println(field.getName());
        //跳过安全检查
        field.setAccessible(true);
        //获取该变量的值,需要传入当前类的对象
        System.out.println(field.get(first));
        //修改该变量的值,需要传入当前类的对象
        field.set(first, 12456);
        //获取该变量的值,需要传入当前类的对象
        System.out.println(field.get(first));
    }

     First.java

    public class First {
        private First() {
        }
    
        private int a = 2;
    
        private void test() {
            System.out.println("hello 你是怎么找到我的?");
        }
    }
  • 相关阅读:
    53. Maximum Subarray
    Search Insert Position
    Single Number II
    260. Single Number III
    136. Single Number
    338. Counting Bits
    axios实现拦截器
    Vuex入门(5)—— 为什么要用Action管理异步操作
    ES6语法(3)—— 用promise()对象优雅的解决异步操作
    Vuex之理解Getters的用法
  • 原文地址:https://www.cnblogs.com/chbyiming-bky/p/9837997.html
Copyright © 2011-2022 走看看