Java GUI库以toString()作为显示方法

时间:2015-06-12 01:20:59

标签: java

为什么Java GUI类使用toString()向最终用户显示内容而不是从接口提供的getDisplay()类型方法?

例如:

JavaFX的:

  • ListView
  • TreeView

拥有这个界面会更有意义:

public interface Displayable{
    public StringProperty displayProperty();
    public String getDisplay();
}

首先,toString()仅返回静态响应并获得更新,它需要重新调用它。如果使用了Property,则只需要调用一次。我一直以为toString()只是用于调试目的,用于告诉对象类型或它是否很快为空。

我想如果你有ListView<String>,调用toString()会返回String,我想这会是Displayable界面的一个缺点。

1 个答案:

答案 0 :(得分:1)

我认为有两个主要原因:

一致性:

每个对象都从Object类传播,并且它具有默认方法toString()来格式化输出。这已经成为所有孩子的标准,因为他们都继承了它。

非GUI类:

静态显示对大多数对象很有用,因为它们不是基于GUI的。它们出现在执行的程序中然后退出,因此在查看它们时它们的值是静态的。另外,能够看到变量的值在程序的不同位置是如何不同的是有用的。如果使用变量更新输出,则会丢失此按时间顺序的变化视图。此外,toString()主要用于将对象输出到文件/命令行,这些对象本质上是静态的,不能被动态方法覆盖而不删除。