Java反射机制调用private类型的构造技巧
发布时间:2021-12-10 16:40:24 所属栏目:PHP教程 来源:互联网
导读:单例类: package singleton; public class SingletonTest { // 私有构造方法 private SingletonTest(){ System.out.println(无参数---构造----); } // 私有构造方法 private SingletonTest(String a){ System.out.println(有参数---构造----参数值: + a); }
单例类: 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 ![]() (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |