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

  • 相关阅读:
    抽奖概率算法
    thinkphp 6.0 结合 layuiadmin (iframe版)
    d2-admin 学习记录
    判断点是否在多边形区域内外
    PHP 优秀资源汇集
    前端学习路线
    限制sa 登录IP
    vs2013发布.net程序
    游标批 量删除数据表
    sql server2012 还原数据库
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/5000097.html
Copyright © 2011-2022 走看看