![](/img/trans.png)
[英]How to ensure that child class will call the correct super constructor in lombok?
[英]How to call private constructor of super class from child class constructor?
在 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 標志在protectedLibraryClass
是final
,並且只能通過它的構造函數設置。
他們這樣做是有原因的,但是您可以在 Java 中使用反射從此類創建對象,即使它是私有的
這是示例:
public static void main(String[] args) {
LibraryClass copy = null;
try {
Constructor[] constructors = LibraryClass.class.getDeclaredConstructors();
for (Constructor constructor : constructors) {
constructor.setAccessible(true);
copy = (LibraryClass) constructor.newInstance();
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.