通过反射可以得到private值?
来源:互联网 发布:centos flash插件 编辑:程序博客网 时间:2024/05/29 10:07
转自:http://hi.baidu.com/lff0305/blog/item/a0baae0994a719236a60fb16.html
下面两个类A,B:
package ptest;
public class A {
private void print() {
System.out.println("==========");
}
}
package ptest;
import java.lang.reflect.Method;
public class B{
public static void main(String[] args) throws Exception {
A a = A.class.newInstance();
Method m = a.getClass().getDeclaredMethod("print", new Class[]{});
m.setAccessible(true); // 这里比较重要, 和预期的抛出异常不一致.
m.invoke(a, new Object[]{});
m.setAccessible(true);
}
}
能正常运行? 结果和预期的一样, 输出了 ========== . 按理说private的方法是受保护的? 还在查资料~~ 按照原来的猜想, setAccessible(true) 的时候应该抛出异常.
加上Security的结果和预期是一致的(抛出权限异常).但是为什么默认的没有呢?
static {
System.setSecurityManager(new SecurityManager());
}
==================
后来查了下书, Inside JVM里面, 3.6节(38页), 写明了在默认情况下, Java程序是没有安全管理器的. 这就是为啥上面的代码能正常运行.
- 通过反射可以得到private值?
- Java反射 类类型就是可以操作的类本身 如何通过反射得到函数 函数返回值 函数参数
- 通过类指针得到private成员的值
- 通过反射调用private方法
- 通过反射机制得到IList
- 通过Invoke反射类的private方法
- 通过反射调类中的private方法
- Spring通过注解得到的值为null,但getbean()可以得到。
- 通过反射得到类型的所有成员
- 通过暴力反射得到私有成员
- 通过反射,得到真实的类Demo
- java中通过反射得到StatusBarManager
- java通过反射得到get、set方法
- 通过反射得到model的真实类型
- 反射可以通过FieldInfo.SetValue设置任何字段的值
- 通过反射调用其他类的private method
- java通过反射调用类的private方法.
- 通过反射技术测试一个类的private…
- J2EE学习中一些值得研究的开源项目
- 代理服务器
- DSP2812结构体取地址问题
- c# 串口 writeline 发送字符串
- 恢复Ext3下被删除的文件
- 通过反射可以得到private值?
- 如何整理测试需求
- DB2数据库的备份和恢复(windows平台)
- 常用数据库JDBC连接写法
- 加密方法
- 微软一月份安全补丁提前通知
- Apache 与 Tomcat 的三种连接方式介绍
- 非常牛的 where 1=1
- JAVA中对存储过程的调用方法 ZT