zoukankan      html  css  js  c++  java
  • Java反射机制学习与研究

    Java反射机制:可以获取正在运行时的Java对象。

    1、判断运行时对象对象所属的类。

    2、判断运行时对象所具有的成员变量和方法。

    3、还可以调用到private方法,改变private变量的值。

    Step:

    0.得到运行时Java对象 1.得到Class对象  2.Field (变量) 3.Method(方法)

    例如:

    现有一类:

    PrivateClass.Java

    package lzh.location.dingwei;

    import android.util.Log;

    public class PrivateClass {
    private String string_field;

    private void T1(String string) {
    Log.i("xxx", string);
    }

    public void T2() {
    Log.i("xxx", string_field);

    }
    }

    先做如下调用:

    Class class1 = Class.forName("lzh.location.dingwei.PrivateClass");
    PrivateClass object = (PrivateClass) class1.newInstance();

    // 改变私有变量的值
    Field field = class1.getDeclaredField("string_field");
    field.setAccessible(true);
    field.set(object, "private value setted by fanshe");
    object.T2();
    // 调用私有方法
    Method method = class1.getDeclaredMethod("T1", new Class[] { String.class });
    method.setAccessible(true);//忽略检查访问权限
    method.invoke(object, new String[] { "private method invoked by fanshe" });

    运行之后的结果如下:

    private value setted by fanshe

    private method invoked by fanshe

  • 相关阅读:
    应用提交到安卓应用市场需要注意哪些地方?
    chromedriver 下载
    缺陷与测试报告
    需求分析与测试计划、方案
    【转】使用信号监控 Django 模型对象字段值的变化
    缓存技术
    Tomcat 代码方式启动
    枚举类型 (币种例子)
    SpringMVC 常用注解
    HttpClient 教程
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/5000097.html
Copyright © 2011-2022 走看看