【发布时间】:2021-09-19 02:37:26
【问题描述】:
在 Java 中,我试图覆盖来自库的类。该类的构造函数之一是私有的,因此我无法从我的类中调用它。有没有办法解决这个问题(反思?)?
public class LibraryClass extends ProtectedLibraryClass {
public LibraryClass() {
super();
}
private LibraryClass(Boolean useFeature) {
super(useFeature);
}
// Other methods
}
public class MyClass extends LibraryClass {
public MyClass() {
super();
}
private MyClass(Boolean useFeature) {
super(useFeature); // <-- This line throws exception as super class constructor is private
}
// Override other methods
}
我不能只调用super(),然后将useFeature 标志设置为protectedLibraryClass 中的final,并且只能通过它的构造函数设置。
【问题讨论】:
-
他们做到了
private是有原因的,我猜 -
我怀疑你可以使用带有反射的构造函数链接,因为调用超类构造函数编译器迫使我们使用
super关键字作为第一条指令,这会阻止其他语法(如反射)。
标签: java reflection private super