java - 您(几乎)总是在类中实现哪些方法和接口(interface)?

标签 java

您总是在您的类中实现哪些方法和接口(interface)?

你总是重写 equals() 吗?如果这样做,您是否也执行 hashcode()?字符串()?您是否养成了实现 Comparable 接口(interface)的习惯?

我刚刚编写了一些代码,我需要在其中实现 compareTo() 并覆盖 equals() 以使我的程序以理智的方式工作;我现在开始看到在任何地方使用这些的方法......

你们怎么看?

最佳答案

除非我需要,否则我通常不会提前实现。

如果我的类包含数据成员并且我打算将其存储在某个地方,我通常会实现 equals、hashCode 和 comparable。

但是,我发现我的大部分类(class)都没有这个问题,所以没有必要这样做。例如,如果您的类围绕其他对象而不是数据的功能展开,那何必呢?如果您只有一个实例或按层次结构组织(例如,GUI 小部件或窗口),何必呢?

不要实现你不需要的东西,但要始终确保检查它们是否需要,因为 Java 通常不会警告你。

此外,请确保使用您的 IDE 或类似 Apache commons 的工具来生成这些函数。很少需要手动编码它们。

至于 toString,我很少实现它,直到我发现自己正在调试并且需要在 Eclipse 调试器中更好地表示(例如,而不是对象 ID)。我害怕隐式转换并且在生成输出时从不使用 toString 。

关于java - 您(几乎)总是在类中实现哪些方法和接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/717997/

相关文章:

Java 8 : Stream a list and map to another list based on different filters

java - 为什么 Spring 不为关系数据库提供响应式(Reactive)(非阻塞)客户端?

java - Maven 代理错误

java - 噪音()没有给我一个广泛的值

java - KeyCloak 服务器响应 IllegalArgumentException :An invalid control character was present in the cookie value or attribute

java - Maven 项目编译但工作区中缺少导入

java - java中小写字母转换为大写字母

java - 如何将 Swing 组件添加到另一个 JFrame 中?

java - 无法创建动态 Web 项目?

java - SpringBoot应用程序中增强Log4J2版本