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类型的构造方法

  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/WJQ2017/p/7762292.html
Copyright © 2011-2022 走看看