• 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());    
        }
    }

  • 相关阅读:
    python for test
    python链接mysql pymysql
    MongoDB数据表添加字段
    NodeVisitor
    无法解决的错误
    一个点绕着另一个点旋转一定角度后的坐标
    2.0版本里程碑,研发日志
    osg Node getParentalNodePaths()报错
    TeslaManage 2.0编译日志
    机械臂模拟2.0
  • 原文地址:https://www.cnblogs.com/charleszhang1988/p/3051421.html
Copyright © 2020-2023  润新知