java - 有2个toString方法吗?

标签 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。 我无法将汽车更改为字符串,因为我按原样使用它。 如果我使用 allocate.getCarID 我的 java 崩溃。 我认为这是因为有些乘务员汽车参数为空。 请问我该怎么办?

Ps:他们都是打印对应对象的数组列表

最佳答案

您只需更改话务员的 toString 方法即可。现在它太简单了,通过打印分配变量的内容来打印 Cars 的 toString,然后让它打印出您想要显示的特定 Cars 数据。这通常意味着从 Cars 调用 getter 方法。顺便说一句,您的 Cars 类看起来已被破坏,因为它包含单个汽车的信息以及许多汽车的信息。为什么会这样还不清楚。

关于java - 有2个toString方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601611/

相关文章:

带有完整年份的 Java DateFormat.SHORT

Java写入文件方法不会从arraylist中写入任何内容

java - 从集合中检索 N 个级别的所有子项

java - 新行中的 BufferedWriter 数组元素

javascript - .toString(16) 总是返回小写字母吗?

java - 如何等于字符串中的单个字符然后计算它

java - Ant:如何减去两个属性(包含时间戳)?

java - 确定两个数组列表中没有不同项目的代码

java - 将字符串文件作为整数读取到数组中?

Android 巨大的 JSONObject toString 出现 OutOfMemoryError