Java 反射获取私有属性和方法

                         Java 反射获取私有属性和方法

马上过年了,深海祝看到这篇博客的码农朋友新年快乐!

今天下午公司没什么事情,所以写了点小东西,算是给各位的新年小礼物...

/*
 *作者:赵星海 (CSDN-深海呐)
 *时间:2019/1/31 17:17
 *用途:反射私有属性方法Demo
 */
public class Test {

    private String textData = "原始数据";

    private String getData() {
        return textData;
    }

    Test() throws Exception {

        Class<Test> MyClass = Test.class;// 获取class对象
        Test text = MyClass.newInstance(); // 获取新建对象

        Field[] fs = MyClass.getDeclaredFields();// 获取所有属性
        for (int i = 0; i < fs.length; i++) {
            fs[i].setAccessible(true);// 将目标属性设置为可以访问
            fs[i].set(text, "CSDN-深海呐");//将属性值重新赋值
        }

        Method[] ms = MyClass.getDeclaredMethods();// 获取获取class对象所有的方法
        for (int i = 0; i < ms.length; i++) {
            ms[i].setAccessible(true);// 将目标属性设置为可以访问
            // 用Eclipse的后端小伙伴请使用System.out.println()打印结果
            Log.e("反射得到的第"+i+"个方法", ms[i].getName());
        }

        Method m = MyClass.getDeclaredMethod("getData");
        m.setAccessible(true);
        // 用Eclipse的后端小伙伴请使用System.out.println()打印结果
        Log.e("方法返回值: ", "" +(ms[0]==null?"":m.invoke(text))); // 正确输出结果 "CSDN-深海呐"


    }

}
发布了54 篇原创文章 · 获赞 212 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39731011/article/details/86718613