我需要创建一个匿名类对象的数组或集合。
例如,我的构造函数的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());
}
};
如何实施?
提前谢谢。
答案 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()