Java反射机制调用private类型的构造方法
2016-06-22 00:17
429 查看
单例类:
测试调用类:
输出结果:
无参数---构造----
无参构造函数 singleton.SingletonTest@11ff436
有参数---构造----参数值:我是参数值
有参的构造函数 singleton.SingletonTest@da3a1e
package singleton; public class SingletonTest { // 私有构造方法 private SingletonTest(){ System.out.println("无参数---构造----"); } // 私有构造方法 private SingletonTest(String a){ System.out.println("有参数---构造----参数值:" + a); } //定义私有类型的变量 private static volatile SingletonTest instance; //定义一个静态共有方法 public static SingletonTest getInstance(){ if(instance == null){ synchronized(SingletonTest.class){ if(instance == null){ return new SingletonTest(); } } } return instance; } }
测试调用类:
package reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import singleton.SingletonTest; public class ReflectDemo { public static void main(String[] args) throws Exception{ Class clazz = SingletonTest.class; /*以下调用无参的、私有构造函数*/ Constructor c0= clazz.getDeclaredConstructor(); c0.setAccessible(true); SingletonTest po=(SingletonTest)c0.newInstance(); System.out.println("无参构造函数\t"+po); /*以下调用带参的、私有构造函数*/ Constructor c1=clazz.getDeclaredConstructor(new Class[]{String.class}); c1.setAccessible(true); SingletonTest p1=(SingletonTest)c1.newInstance(new Object[]{"我是参数值"}); System.out.println("有参的构造函数\t"+p1); } }
输出结果:
无参数---构造----
无参构造函数 singleton.SingletonTest@11ff436
有参数---构造----参数值:我是参数值
有参的构造函数 singleton.SingletonTest@da3a1e
相关文章推荐
- RxJava学习笔记---简单使用
- JAVA中静态代理和动态代理
- java 值传递 数组传递
- C3P0配置
- Spring中bean的作用域
- 字节转为16进制输出
- SpringMVC 直接返回字符串时,中文乱码出现问号(?)的问题
- Git在eclipse中的配置详细记录
- eclipse 配置maven插件(在线+离线)
- Leet Code 41 First Missing Positive - Java
- Leet Code 43 Multiply Strings - 字符串表示的数相乘 - Java
- Leet Code 44 Wildcard Matching - 通配符匹配 - Java
- Leet Code 45 Jump Game II - 跳跃游戏 - Java
- Leet Code 46 Permutations - 排列 - Java
- Leet Code 47 Permutations II - 排列 - Java
- Java基础--类与对象
- Java基础--Java类设计
- Java基础--高级类特性
- 转载 Spring中应用反射机制浅析
- 简单桶排序——Kotlin与Java实现