[英]How to call super constructor on some condition?
在某些情況下可以調用超級構造函數嗎? 我有下面的代碼
private static final class AuditDataTable extends AuditDataModel<DiscrepanciesVO> {
private AuditDataTable (){
super();
}
}
但是我想在某些Boolean
類變量為true
時調用super()
,如何實現呢?
現在上面的super()
將調用此
public AuditDataModel() {
super();
AuditResulstBean.setAuditResultRowCount(0);
AuditResulstBean.setAuditResultRowCheck(false);
}
但是我希望某些條件為false
時不調用頂級類super()
構造函數。
這不是很好,但是可以(不是您問題的直接答案,而是您問題的解決方案)。 您必須在選擇之前初始化哪個構造函數,因此您將不需要依賴於您的super。 請注意,永遠不要使用doSuper,並且決策要點是落后的。 根據要求提供了一個幾乎完整的工作示例:
private static final class AuditDataTable extends AuditDataModel<DiscrepanciesVO> {
private AuditDataTable(boolean doSuper){
super();
}
private AuditDataTable(){
//other constructor
}
AuditDataTable getAuditDataTable(boolean useSuper){
AuditDataTable auditDataTable;
if(useSuper)
auditDataTable = new AuditDataTable(true);
else
auditDataTable = new AuditDataTable();
return auditDataTable;
}
}
在任何情況下,構造函數都將調用超級構造函數。
選擇呼叫/不呼叫的問題是很糟糕的。
看到:
public class UpperClass {
public UpperClass()
{
System.out.println("UpperClass");
}
public UpperClass(int a)
{
System.out.println("UpperClass 1");
}
}
和
public class LowerClass extends UpperClass {
public LowerClass()
{
super(1);
System.out.println("LowerClass");
}
}
不使用super(1)或使用super(1),在創建LowerClass對象時,您將獲得:
上層階級
下層階級
要么
上等階級1
下層階級
那么問題是:您想要哪個超級構造函數,具有哪些條件?
然后
1您必須具有2個(或多個)超級構造函數,或者只有一個帶參數的超級構造函數
2您必須將此條件從子類傳遞到超類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.