2016-07-19 68 views
1

我有一個類Transactions的兩個構造函數,它們在最後一個參數不同,第一個構造函數採用Label對象和第二個Box對象。如何區分一個類的兩個實例

public class Transactions { 
    private String date; 
    private String kind; 
    private int employee; 
    private Label label; 
    private Box box; 

public Transactions(String date, String kind, int employee, Box box) { 
    this.date = date; 
    this.kind = kind; 
    this.employee = employee; 
    this.box = box; 
} 

public Transactions(String date, String kind, int employee, Label label) { 
    this.date = date; 
    this.kind = kind; 
    this.employee = employee; 
    this.label = label; 
} 


... 

} 

可以說,我已經創建Transactions類的一個對象,它是tr。 我如何區分哪一個?與Label對象的對象或Box對象的對象?哪個構造函數被調用?

+2

哪個構造函數已被調用並不重要,但您可以檢查'box'或'label'是否爲空。這是否被認爲是優秀的設計是另一回事。 – Thomas

回答

5

如果您需要區分,兩個對象可能不應該是同一類。

在你的例子中,兩個類可以共享一個公共超類,或者它們應該有一個特殊類型的字段,它包含公共信息。

1

您可以通過檢查this.label == null來輕鬆檢查剛纔調用了哪一個。

您還可以添加一個標誌,指出哪個構造函數已被調用。

無論如何。如果你遇到這樣的問題,你應該再次想出你的代碼。這些構造函數可能不應構造同一類的對象。也許一些繼承,也許一些組合......