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)。
在初始化时,我的代码执行了以下步骤:
- 从 Course.txt 数据库中读取行。
- 创建课程对象并插入 ArrayList
- 在数组列表上调用 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.)
快速背景:
我正在考虑重构我之前的一个 class 项目作为一项有趣的练习。该项目正在创建一个课程注册系统并使用 .txt 文件作为数据库。作为我自己的练习,我一直在学习如何使用 SQL 数据库。通过观看 lynda.com 视频,我在使用 Apache 服务器和 mySQL 数据库的地方下载并安装了 MAMP。
话虽如此,该项目的要求之一是按字母顺序显示课程列表。我有一个 Course.java class 实现了 Comparable。我实现了 compareTo(Course course) 并允许我在 ArrayList 上调用 Collections.sort(coursesArrayList)。
在初始化时,我的代码执行了以下步骤:
- 从 Course.txt 数据库中读取行。
- 创建课程对象并插入 ArrayList
- 在数组列表上调用 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.)