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

  • 相关阅读:
    socket.io笔记
    node express+socket.io实现聊天室
    socket.io中 connect与connection的区别
    css clip-path的polygon属性绘制多边形
    vue 3.0
    angular
    项目总结61:IDEA远程调试linux下的tomcat
    Java深入学习28:Redisson分布式锁的使用
    Java深入学习27:Java反射
    Java深入学习28:Runnable和Callable
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/5000097.html
Copyright © 2011-2022 走看看