有2个toString方法吗?

时间:2016-09-20 18:46:57

标签: java arraylist tostring

我有3节课。服务员,汽车和车库。 所有都有他们的toString方法。 但是,

public class Attendant {

    private Cars assign;
    static ArrayList<Attendant> myAtt = new ArrayList<Attendant>();

    public Attendant(int staffNum, String id, boolean available, attNm name, Cars assign) {
        this.staffNum = staffNum;
        this.id = id;
        this.available = available;
        this.name = name;
        this.assign = assign;
    }

    public String toString() {
        return "Attendant [staffNum=" + staffNum + ", id=" + id + ", available=" + available + ", name=" + name
                + ", assign=" + assign + "]";
    }
}

汽车:

public class Cars {

    private String carID;
    private String plateNum;
    private static String position;
    private static Attendant assignedTo;
    private long currTime;
    static String[] tempArray2 = new String[Garage.getCarsCapacity()];


    @Override
    public String toString() {
        return "Car:" + plateNum + " ID:" + carID + " Position:" + position + " Assigned to:" + assignedTo.getId() 
        + "(" + assignedTo.getName() + ")" + " Parked at:" + convert(currTime);
    }
}

所以我的2 toString打印好了。 问题是我可以修改服务员对象以包含汽车作为参数。所以,如果我打印所有我的服务员,它将使用其toString然后打印分配部件,它将打印汽车toString。 当我想要打印我的服务员时,我需要它才能打印carID。 我不能把车改成串,因为我按原样使用它。 如果我使用assign.getCarID我的java崩溃。 我认为这是因为有些是服务员车参数都是空的。 我该怎么办?

Ps:他们都是打印相应对象的arraylists

1 个答案:

答案 0 :(得分:2)

您只需更改Attendant的toString方法即可。现在它过于简单了,通过打印出assign变量的内容打印出Cars的toString,而是打印出你想要显示的特定Cars数据。这通常意味着从Cars调用getter方法。另外,您的汽车类看起来很破碎,因为它包含单个汽车的信息以及许多汽车的信息。为什么会这样不明确。