为什么Java GUI类使用toString()
向最终用户显示内容而不是从接口提供的getDisplay()
类型方法?
例如:
JavaFX的:
ListView
TreeView
拥有这个界面会更有意义:
public interface Displayable{
public StringProperty displayProperty();
public String getDisplay();
}
首先,toString()
仅返回静态响应并获得更新,它需要重新调用它。如果使用了Property
,则只需要调用一次。我一直以为toString()
只是用于调试目的,用于告诉对象类型或它是否很快为空。
我想如果你有ListView<String>
,调用toString()
会返回String
,我想这会是Displayable
界面的一个缺点。
答案 0 :(得分:1)
我认为有两个主要原因:
每个对象都从Object
类传播,并且它具有默认方法toString()
来格式化输出。这已经成为所有孩子的标准,因为他们都继承了它。
静态显示对大多数对象很有用,因为它们不是基于GUI的。它们出现在执行的程序中然后退出,因此在查看它们时它们的值是静态的。另外,能够看到变量的值在程序的不同位置是如何不同的是有用的。如果使用变量更新输出,则会丢失此按时间顺序的变化视图。此外,toString()
主要用于将对象输出到文件/命令行,这些对象本质上是静态的,不能被动态方法覆盖而不删除。