zoukankan      html  css  js  c++  java
  • Java 反射 调用私有构造方法

      单例类:

     1 package singleton;
     2 
     3 public class SingletonTest {
     4 
     5     // 私有构造方法
     6     private SingletonTest(){
     7         
     8         System.out.println("无参数---构造----");  
     9     }
    10     // 私有构造方法
    11     private SingletonTest(String a){
    12         
    13         System.out.println("有参数---构造----参数值:" + a);  
    14     }
    15     //定义私有类型的变量
    16     private static volatile  SingletonTest instance;
    17     
    18     //定义一个静态共有方法
    19     public static SingletonTest getInstance(){
    20         
    21         if(instance == null){
    22             synchronized(SingletonTest.class){
    23                 if(instance == null){
    24                     return new SingletonTest();
    25                 }
    26             }
    27         }
    28         return instance;
    29     }
    30 }

      测试调用类:

     1 package reflect;
     2 
     3 import java.lang.reflect.Constructor;
     4 import java.lang.reflect.Method;
     5 
     6 import singleton.SingletonTest;
     7 
     8 public class ReflectDemo {
     9 
    10     public static void main(String[] args) throws Exception{
    11         Class clazz = SingletonTest.class;
    12 
    13         /*以下调用无参的、私有构造函数*/   
    14         Constructor c0=  clazz.getDeclaredConstructor();   
    15         c0.setAccessible(true); 
    16         SingletonTest po=(SingletonTest)c0.newInstance();   
    17         System.out.println("无参构造函数	"+po); 
    18 
    19         /*以下调用带参的、私有构造函数*/   
    20         Constructor c1=clazz.getDeclaredConstructor(new Class[]{String.class});   
    21         c1.setAccessible(true);   
    22         SingletonTest p1=(SingletonTest)c1.newInstance(new Object[]{"我是参数值"});   
    23         System.out.println("有参的构造函数	"+p1);  
    24 
    25     }
    26 
    27 }

      结果:

    1 无参数---构造----
    2 无参构造函数    singleton.SingletonTest@11ff436
    3 有参数---构造----参数值:我是参数值
    4 有参的构造函数    singleton.SingletonTest@da3a1e

      参考资料

      Java反射机制调用private类型的构造方法

  • 相关阅读:
    PDB文件详解
    C++模板常用功能讲解
    Windows下多线程编程(二)
    关于静态库中使用全局变量可能导致的问题
    js中的函数
    js中字符串的加密base64
    列表推导式
    函数和方法的区别
    xshell连不上虚拟机
    网络编程,并行,并发和协程
  • 原文地址:https://www.cnblogs.com/WJQ2017/p/7762292.html
Copyright © 2011-2022 走看看