暴力反射创建多个单例模式的实例对象
2014-05-12 16:41
411 查看
既然暴力反射可以得到被private修饰的成分,那么就应该有获得私有构造函数的方法,查看api文档发现确实有getDeclaredConstructor()方法
package day4; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class Test7 { /** * @param args * 暴力反射获取单例的构造方法创建实力对象 * @throws SecurityException * @throws NoSuchMethodException * @throws InvocationTargetException * @throws IllegalArgumentException * @throws IllegalAccessException * @throws InstantiationException */ public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Single s = Single.getInstance(); Constructor constructor = s.getClass().getDeclaredConstructor(); constructor.setAccessible(true); Single s2 = (Single)constructor.newInstance(); System.out.println(s2.x); } } class Single{ private Single(){}; public static int x = 4; private static Single s = new Single(); public static Single getInstance(){ return s; } }
相关文章推荐
- 抽象工厂模式:简单工厂模式、工厂方法模式对比;在工厂方法模式中使用反射创建对象实例
- java通过暴力反射创建不可实例化类的对象实例
- 从桌面图标启动一个LauncherMode为标准模式的主activity为什么不会重复创建多个实例
- .Net 中的反射(动态创建类型实例) - Part.4动态创建对象
- 单例防止暴力反射和反序列化创建对象
- C# 类反射创建对象实例
- 详解C# 利用反射根据类名创建类的实例对象
- JavaScript对象创建模式实例汇总
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- C# 利用反射根据类名创建类的实例对象
- 反射创建构造方法无参或带参类的实例对象
- 抵御反射创建单例模式的对象
- C# 反射创建对象,包括创建引用外部程序集类的实例
- Java 反射创建类的实例对象(默认构造方法和私有构造方法)
- C# 反射详解:定义、创建对象、调用实例方法及静态方法
- .Net反射创建对象实例报 System.Mi…
- Java策略模式+反射动态创建对象
- 利用反射技术创建只包含私有无参构造函数的对象实例
- 工厂模式解决如何不通过new来创建实例对象的方法
- 动态创建多个对象并分行显示实例