加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读