Java bean 和实现 Comparable 之类的接口的约定是什么?

Kje*_*din 5 java conventions javabeans comparable

据我所知,Java Bean 应该始终:

  1. 只有一个空的构造函数
  2. 只有字段,以及这些字段的 getter/setter 方法。

但是,我想知道 Java bean 实现接口的约定是什么 Comparable?我可以保留 java bean 纯,这意味着绝对没有行为,只有数据,并编写自定义比较器类。不过,实现可比较更容易。

在实现 Comparable to Java Beans 之类的简单通用接口时,是否有任何约定?我自己找不到任何后果,但感觉我可能会违反一些规则,并且可能有一些我没有想到的事情。

Ale*_*exR 4

恕我直言,这个问题主要与惯例无关,而是与需求有关。

你是对的,将 bean 内容与任何业务逻辑分离是一种很好的风格。我想在这里补充一点,这通常是一个很好的实践,因为你的 bean 和比较器之间的关系是多对多的,即

  1. 您可能会为一个 Bean 类持有多个比较器,并在不同的上下文中使用它们
  2. 有时,您可以为多个不同的类重复使用一个比较器,或者创建比较器的层次结构。

然而,你是对的,将比较逻辑写入类本身并不那么冗长,而且在某些情况下更可取。选择完全取决于作者的品味和他/她正在开发的应用程序的要求。