在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标志设置为usefeature标志为 final
在里面 protectedLibraryClass
并且仅通过其构造函数设置。
2条答案
按热度按时间yrwegjxp1#
他们这样做是有原因的,但您可以使用java中的反射从这个类创建对象,即使它是私有的
下面是一个例子:
h7wcgrx32#
我认为这是不可能的,看看这篇文章和这些文档。您可能要做的是将两个(或多个)类文件放入它们自己的包中,然后使用
protected
访问修饰符,以便构造函数只能在包中使用。如果只放置从LibraryClass
类,它将具有与生成构造函数相同的效果private
如上所述。