【发布时间】:2019-10-29 21:18:36
【问题描述】:
假设我有一个带有私有构造函数的类 A,以及扩展它的类 B:
public class A {
private A() {}
}
public class B extends A {
public B(){
// error - there is no default constructor available in 'A'
}
}
我知道可以通过 Java 反射调用私有构造函数,但是我该如何在B 构造函数中调用?谢谢。
【问题讨论】:
-
如果
B扩展A(在您的示例中没有)并且A的构造函数是私有的,这很简单:你不能 .看看spec。 -
java(编译器)会承认这一点吗?如果 B 扩展了 A,编译器要求 B 在 B 的构造函数的第一行调用 A 的构造函数
-
@LeoLeontev 使用这个逻辑
private也不是private。 -
另一个好问题是你为什么要这样做.....
-
换一种说法:如果
A的作者知道他们在做什么,他们将其设为私有的原因正是为了阻止你这样做.
标签: java reflection