zoukankan      html  css  js  c++  java
  • java反射访问private属性和方法

    Private类中有私用成员变量和私有方法,正常情况下外部类是无法访问私有方法和改变私有成员变量的值

    public class Private {

        private String names = "zs";
        private String sayHello(String name){
            return "say:"+name;
        }
        
        public String getNames(){
            return names;
        }
    }

    通过反射可实现对私有方法的访问和改变私有成员变量的值

    import java.lang.reflect.Field;
    import java.lang.reflect.Method;

    public class TestPrivate01 {

        public static void main(String[] args) throws Exception {
            Private p = new Private();
            //Private p2 = new Private();
            //System.out.println(p.getClass()==p2.getClass());
            Class<?> classType = p.getClass();
            
            Method privatemethod = classType.getDeclaredMethod("sayHello", new Class[]{String.class});
            Field field = classType.getDeclaredField("names");
            //将访问权限控制检查压制(suppress)
            privatemethod.setAccessible(true);
            field.setAccessible(true);
            
            field.set(p, "ls");
            System.out.println(privatemethod.invoke(p, new Object[]{"Hello"}));
            System.out.println(p.getNames());    
        }
    }

  • 相关阅读:
    JS之DOM篇client客户区
    JS只DOM篇事件处理程序
    JS之DOM篇查询计算样式
    JS之DOM篇动态样式
    JS之DOM篇节点操作
    JS之DOM篇节点遍历
    宽带上网障碍分析与处理及ADSL连接故障注意事项
    cn_office_professional_plus_2013 简体中文版发布
    天猫淘宝“双十一”交易额191亿
    NAT设置全攻略
  • 原文地址:https://www.cnblogs.com/charleszhang1988/p/3051421.html
Copyright © 2011-2022 走看看