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

Java 如何区分一个类的两个实例,java,constructor,Java,Constructor,我有两个类Transactions的构造函数,它们在最后一个参数中有所不同,第一个构造函数接受标签对象,第二个构造函数接受框对象 public class Transactions { private String date; private String kind; private int employee; private Label label; private Box box; public Transactions(String date, S

我有两个类
Transactions
的构造函数,它们在最后一个参数中有所不同,第一个构造函数接受
标签
对象,第二个构造函数接受
对象

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

我怎样才能分辨它是哪一个?是带有
标签的对象还是带有
框的对象?调用了哪个构造函数?

如果需要区分,两个对象可能不属于同一类


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

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


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

您可以通过检查this.label==null
来轻松检查刚才调用了哪个超类

您还可以添加一个标志,指出调用了哪个构造函数


无论如何。如果您面临这样的问题,您肯定应该重新考虑代码。这些构造函数可能不应该构造同一类的对象。可能是一些继承,可能是一些组合…

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

您还可以添加一个标志,指出调用了哪个构造函数


无论如何。如果您面临这样的问题,您肯定应该重新考虑代码。这些构造函数可能不应该构造同一类的对象。可能是一些继承,可能是一些组合…

调用了哪个构造函数并不重要,但您可以检查
box
label
是否为空。这是否被认为是好的设计是另一回事。调用了哪个构造函数并不重要,但您可以检查
box
label
是否为空。这是否被认为是好的设计是另一回事。