如何区分一个类的两个实例

时间:2016-07-19 10:42:28

标签: java constructor

我有两个类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 个答案:

答案 0 :(得分:5)

如果你需要区分它,两个对象可能不应该属于同一类。

在您的示例中,两个类可以共享一个公共超类,或者它们应该具有一个特殊类型的字段,并保存公共信息。

答案 1 :(得分:1)

您可以通过检查this.label == null来轻松检查刚刚调用的是哪一个。

您还可以添加一个标志,该标志指向已调用的构造函数。

反正。如果您遇到这样的问题,您一定要再次考虑您的代码。那些构造函数可能不应该构造同一个类的对象。也许是一些继承,也许是一些构成......