Reflect获取私有属性和私有方法

Posted 我的小侯子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Reflect获取私有属性和私有方法相关的知识,希望对你有一定的参考价值。

Person类:

public class Person
    private int age = 18;

    private int getAge(int a) 
        return age + a;
    

在Mainactivity中:

Person person= new Person();
        Class<? extends Person> cls = person.getClass();
        try 
            Field field = cls.getDeclaredField("age");
            field.setAccessible(true);
            Object age=field.get(reflect);//此处的Object就是age对象的值
//            Log.e("111", "==field====" + age);

//            Log.e("111", "==field.getType()====" + field.getType().getName());
            Method method = cls.getDeclaredMethod("getAge", int.class);
            method.setAccessible(true);
            Object invoke = method.invoke(reflect, 7);
//            Log.e("111", "==invoke====" + invoke);

            Constructor<? extends ReflectText> constructor = cls.getDeclaredConstructor();
            ReflectText reflectText = constructor.newInstance();
//            Log.e("111", "==reflectText====" + reflectText);
         catch (NoSuchFieldException e) 
            e.printStackTrace();
         catch (IllegalAccessException e) 
            e.printStackTrace();
         catch (NoSuchMethodException e) 
            e.printStackTrace();
         catch (InvocationTargetException e) 
            e.printStackTrace();
         catch (InstantiationException e) 

        

以上是关于Reflect获取私有属性和私有方法的主要内容,如果未能解决你的问题,请参考以下文章

反射-私有变量/私有方法-Java

PHP中的__get()和__set()方法获取设置私有属性

Java反射设置和访问私有属性值

反射机制访问私有方法代码异常"java.lang.ClassCastException"

VB.Net 属性 - 公共获取,私有集

java反射访问私有方法的的问题