面试题:私有构造方法类外部能访问吗,用什么方…

2018-06-18 03:19:07来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

反射的时候通过暴力破解是可以访问的

package com.swift.fanshe;

import java.util.List;

public class Fanshe {
    
    String name="swift";
    private Fanshe(List list) {
        System.out.println("list");
    }
}

用反射的方法调用上面的类

package com.swift.fanshe;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class TestFanshe {
    
    @Test
    public void test() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        
        Class clazz=Class.forName("com.swift.fanshe.Fanshe");
        Constructor c=clazz.getDeclaredConstructor(List.class);
        c.setAccessible(true);//暴力打开私有构造
        Fanshe fanshe=(Fanshe) c.newInstance(new ArrayList());
        System.out.println(fanshe.name);
        
    }
}

对构造器进行暴力破解后,私有的构造也可以访问,这个构造器的获得要通过getDeclaredConstructor()方法

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:hibernate框架学习笔记4:主键生成策略、对象状态

下一篇:【Java Web】简易商品信息管理系统——首个Web项目