Discuss / Java / private的构造方法可以通过Class.newInstance调用呢

private的构造方法可以通过Class.newInstance调用呢

Topic source

通过Class.newInstance()可以创建类实例,它的局限是:只能调用public的无参数构造方法。带参数的构造方法,或者非public的构造方法都无法通过Class.newInstance()被调用。

public class Aclass {        private Aclass(){            System.out.println("Aclass私有构造方法");        }    public static void main(String[] args) throws Exception {        Class cls = Aclass.class;        System.out.println(cls.newInstance());    }}

>>
Aclass私有构造方法
Aclass@610455d6

老师,private的构造方法可以通过Class.newInstance调用呢?

The__Wolf

#2 Created at ... [Delete] [Delete and Lock User]

他意思是你得用Class.newInstance().Aclass()这样才叫调用把,估计是调不起来

廖雪峰

#3 Created at ... [Delete] [Delete and Lock User]

我不知道你是怎么运行的,private构造方法绝对会抛出IllegalAccessException

你这个是Aclass类自身的main里调用private 构造方法的,用其他类去newInstance就会报java.lang.IllegalAccessException,其实就是private的作用域的原理。

Joker.fu_95

#5 Created at ... [Delete] [Delete and Lock User]

这个方式可以

Constructor cn = cls.getDeclaredConstructor();cn.setAccessible(true);cn.newInstance();

  • 1

Reply