【发布时间】:2017-12-02 08:39:21
【问题描述】:
这是我在 Java 练习中遇到的巨大难题。所以,我们得到了这个:
public class CyclicEmployee {
private int age;
private String name;
private CyclicEmployee boss;
private List<CyclicEmployee> subordinate
}
我们的目标是通过切割可能导致递归无穷大的字段来覆盖 toString 方法。最后,它应该看起来像一个带有姓名、年龄、老板和下属的打印对象。
Employee[age=30,name='Mike',boss=Employee[age=45,name='Ann'], subordinate=[Employee[age=25,name='Jimmy']]]
好吧,我试过了,发现我不知道如何处理 toString 覆盖:
import java.util.ArrayList;
import java.util.List;
public class CyclicEmployee {
private int age;
private String name;
private CyclicEmployee boss;
private List<CyclicEmployee> subordinate ;
public CyclicEmployee(int age, String name) {
this.age=age;
this.name=name;
}
public static void main(String[] args) {
CyclicEmployee Mike = new CyclicEmployee(33,"Mike");
Mike.boss = new CyclicEmployee(44,"Ann");
Mike.subordinate = new ArrayList<CyclicEmployee>();
Mike.subordinate.add(new CyclicEmployee(24,"Jim"));
System.out.println(Mike.toString());
}
@Override
public String toString() {
return "CyclicEmployee{" +
"age=" + age +
", name='" + name + '\'' +
", boss=" + boss +
", subordinate=" + subordinate +
'}';
}
}CyclicEmployee{age=33, name='Mike', boss=CyclicEmployee{age=44, name='Ann', boss=null, subordinate=null}, subordinate=[CyclicEmployee{age=24, name='Jim', boss=null, subordinate=null}]}
看来我应该在这里剪掉所有的“空”字段,但我找不到出路。
【问题讨论】:
-
您的问题是不获取空字段或什么?
-
简单地说-是的,我想省略它们。
-
你检查过我的解决方案了吗,对你有用吗?
标签: java tostring overriding