单例能被反射吗?肯定能。
来源:互联网 发布:淘宝旗袍模特 周婷 编辑:程序博客网 时间:2024/05/05 04:44
单例能被反射吗?肯定能。
package com.zkk;public class ElvisModified {private static boolean flag = false;public static boolean getFl(){return flag;}private ElvisModified() {synchronized (ElvisModified.class) {if (flag == false) {flag = !flag;} else {throw new RuntimeException("单例模式被侵犯!");}}}private static class SingletonHolder {private static final ElvisModified INSTANCE = new ElvisModified();}public static ElvisModified getInstance() {return SingletonHolder.INSTANCE;}public void doSomethingElse() {}}
package com.zkk;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Modifier;public class Test3 {/** * @param args */public static void main(String[] args) {try {Class<ElvisModified> classType = ElvisModified.class;Constructor<ElvisModified> c = classType.getDeclaredConstructor(null);c.setAccessible(true); Field[] fields= ElvisModified.class.getDeclaredFields(); for(Field field:fields){ if(Modifier.isStatic(field.getModifiers())){ System.out.println("字段是:"+field.getName()); field.setAccessible(true); field.set(null,false); } } // System.out.println("当前static:"+ElvisModified.getFl()); ElvisModified e1 = (ElvisModified) c.newInstance(); Field[] fields2= ElvisModified.class.getDeclaredFields(); for(Field field:fields2){ if(Modifier.isStatic(field.getModifiers())){ System.out.println("字段是:"+field.getName()); field.setAccessible(true); field.set(null,false); } }ElvisModified e2 = ElvisModified.getInstance();System.out.println(e1 == e2);} catch (Exception e) {e.printStackTrace();}}}
阅读全文
0 0
- 单例能被反射吗?肯定能。
- AChartEngine小Demo,肯定能运行的。
- 能看懂这些话的,心中肯定有故事!
- 肯定能看上你本科时开始你帮我
- 若有你的名字,肯定能【随机】到你
- 一种肯定能提高开发者编程能力的方法
- 一种肯定能提高开发者编程能力的方法
- 一种肯定能提高开发者编程能力的方法
- 一种肯定能提高开发者编程能力的方法
- 什么是反射,反射能干嘛?
- J2SE_通过反射能获取方法参数名称吗?
- java 中反射能访问私有属性吗?
- 反射还能这么玩?
- 每天坚持1-2小时就行,谁也不是傻子.肯定能会
- 找工作要看的书,如果都看了肯定能找到
- makefile(这哥们很强,看完这篇文章,自己写makefile肯定能过关了)
- 我不太肯定我的方向,但是我希望自己能走的远一点。
- 俞敏洪:一个人即使没有理想,但有2件事情肯定能做
- Android:用GSON 五招之内搞定任何JSON数组
- JSP 添加cookie、获取cookie
- ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to this MySQL解决方式
- 基于 webpack 搭建前端工程基础篇
- android 动态权限请求(整理自官方指南)
- 单例能被反射吗?肯定能。
- POJ 1986 Distance Queries && HDOJ 2586 How far away?
- linux服务器性能——CPU、内存、流量、磁盘使用率的监控
- Java 请求https接口不需要安装证书
- 如何在PHP7中安装mysql的扩展
- PHP的页面静态化简介。
- Java容器LinkedHashMap源代码解析
- HTML中include file的用法
- shell mysql双主自动配置脚本