【问题标题】:Difference between SimpleStringProperty and StringPropertySimpleStringProperty 和 StringProperty 之间的区别
【发布时间】:2015-03-19 14:00:36
【问题描述】:

我正在使用 JavaFx TableView,发现有一些类可以使用 TableView,例如 SimpleStringProperty、StringProperty、SimpleBooleanProperty 和 BooleanProperty 等。现在我想知道哪一个用于 TableView,SimpleStringProperty 或仅 StringProperty,什么是它们之间的区别。

【问题讨论】:

  • 问题简洁明了,投票重开。
  • 是的,我在网上寻找答案。

标签: java javafx javabeans


【解决方案1】:

StringProperty 是可观察字符串属性的抽象基类,SimpleStringProperty 是具体实现。

规则是:

  1. 在您的 API 中显示 StringProperty
  2. 在代码中使用 SimpleStringProperty 作为具体实现

您有时会看到 JavaFX 代码本身从 StringPropertyBase 创建匿名内部类,原因是它在内存方面更有效,但您通常不必费心。

【讨论】:

  • 或者更具体地说:StringProperty是所有可写字符串属性的基类。
  • @tomsontom 如果我要使用 SimpleStringProperty,为什么不在 API 和类定义中使用相同的属性?
  • 这是 API 设计的第 1 课,面向对象仅提供 API 所需的信息,这使您可以在不破坏 API 用户的情况下切换内部结构
  • @tomsontom 但是如果您随后更改 API 以希望从 StringProperty 派生一些东西(大概),现有用户将不会看到任何编译问题,因为 SimpleStringProperty 仍然可以存储在 StringProperty 以及新的派生类型,然后将无法正常工作。通过在 API 中指定 SimpleStringPropery,如果您更改 API,就会立即变得明显。
  • @simpleuser “然后无法正常工作”为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 2020-05-10
  • 2014-09-20
  • 2010-10-28
  • 2015-10-04
  • 2012-08-12
  • 2011-02-18
相关资源
最近更新 更多