如何创建匿名类对象的数组或集合

时间:2018-03-28 06:48:27

标签: java arrays list arraylist collections

我需要创建一个匿名类对象的数组或集合。

例如,我的构造函数的toString是:

public String toString() {
    return String.format("%10s%12s%12d", getFirstName(), getLastName(), getAge());
}

我可以创建MyClass个对象的列表:

List<MyClass> list = new ArrayList<>();

但现在我需要使用匿名类覆盖toString方法 并使用新的toString方法创建一个新的集合:

MyClass myClass = new MyClass() {
    public String toString() {
        return String.format("%s%12s%12d", getFirstName(), getLastName(), getAge());
    }
};

如何实施?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

如上所述,您无法更改Java类中的方法,因此根据您的需要,您可以选择多个选项。

您可以创建一个包裹UserWrapper的{​​{1}},覆盖User,并将所有其他方法调用委托给它包装的toString()对象。

您可以修改User类以包含格式字符串,这样您就可以执行类似User的操作,而user.setFormat("%s%12s%12d");会使用该格式进行显示。

您可以完全从toString()中取出格式,因为从设计的角度来看它并不是真正的工作,当您需要显示用户的详细信息时,它将在User等其他类中完成。

最后一个可能是设计最合理的,你打算在显示列表内容的地方(并且不依赖于列表的默认String str = String.format("%s%12s%12d", user.getFirstName(), user.getLastName(), user.getAge());实现),类似于

toString()