• 反射动态的获取字段&暴力访问


    import java.lang.reflect.Field;
    
    public class ReflectDemo3 {
    
        public static void main(String[] args) throws Exception {
            
            /*
             * 获取类中的成员
             * 反射字段。
             */
        
            getFieldDemo();
            
        }
        
        public static void getFieldDemo() throws Exception{
            
            String className = "cn.qujianlei.domain.Person";
            Class clazz = Class.forName(className);
            
            //获取指定age字段
    //        Field field = clazz.getField("name");//该方法只获取公有的
            
            Field field = clazz.getDeclaredField("name");//获取权限提升
            
            //要对非静态的字段操作必须有对象。
            Object obj = clazz.newInstance();
            //使用父类的方法将访问权限检查的能力取消
            field.setAccessible(true);//暴力访问,能访问
            
            field.set(obj, "lisi");//设置值
            
            System.out.println(field.get(obj));
            
        }
        
    
    }
    public class Person {
            
        private String name;
        private int age;
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        
        public Person() {
            super();
            System.out.println("person run");
            
        }
        
        public void show(){
            System.out.println("person show run");
        }
        
        public static void staticShow(){
            System.out.println("person static show run");
        }
        
        public void paramShow(String name,int age){
            System.out.println("show:"+name+"---"+age);
        }
        
        
    }
  • 相关阅读:
    js 比较好的博客
    网络相关
    gulp学习笔记--简单入门
    数组和对象的复制
    seajs学习笔记
    art-template引擎模板
    angularJS中的$apply(),$digest(),$watch()
    CMD和AMD
    通过script标签实现跨域
    jQuery基础知识
  • 原文地址:https://www.cnblogs.com/qjlbky/p/5929466.html
Copyright © 2020-2023  润新知