Java Bean 类 比 getters/setters 具有更多的功能是不是很常见?

Is it conventional for Java Bean Classes to have more functionality than just getters/setters?

快速背景:

我正在考虑重构我之前的一个 class 项目作为一项有趣的练习。该项目正在创建一个课程注册系统并使用 .txt 文件作为数据库。作为我自己的练习,我一直在学习如何使用 SQL 数据库。通过观看 lynda.com 视频,我在使用 Apache 服务器和 mySQL 数据库的地方下载并安装了 MAMP。

话虽如此,该项目的要求之一是按字母顺序显示课程列表。我有一个 Course.java class 实现了 Comparable。我实现了 compareTo(Course course) 并允许我在 ArrayList 上调用 Collections.sort(coursesArrayList)。

在初始化时,我的代码执行了以下步骤:

  1. 从 Course.txt 数据库中读取行。
  2. 创建课程对象并插入 ArrayList
  3. 在数组列表上调用 Collections.sort()。

问题:

当我在 lynda.com 视频中学习 Java Beans 并在网上做了一些研究时,这让我怀疑是否 "conventional" 实现 Comparable 和 compareTo()在 Java Bean Class 中。如果不是常规的,您如何建议对由 Java Beans 组成的 ArrayList 进行排序?

感谢您的帮助!

在 JavaBeans class 中实现 Comparable 并不违反 JavaBeans 规范。 (该规范需要一个默认构造函数、根据命名约定的 getter 和 setter,并且是可序列化的。)

但是,我不会仅仅因为您的作业包括按该顺序打印就根据标题顺序实施 Comparable。最有可能的是,一门课程会有一个 id,并且基于它进行排序可能同样可取。或服务员人数。

但是作为一个 JavaBean,您的课程可以按任何旧方式排序

courses.sort( Comparator.comparing( Course::getTitle ) );          // by title
courses.sort( Comparator.comparing( Course::getAttendantCount ) ); // by attendant count

(这需要 Java 8.)