gpt4 book ai didi

java - 为什么 JCL 中的类不在其 `@Override` 方法上显式使用 `toString()`?

转载 作者:行者123 更新时间:2023-11-30 08:42:24 24 4
gpt4 key购买 nike

API 规范 page for the Object class对于方法 toString() 声明:

"It is recommended that all subclasses override this method."

因此我希望在 Java 类库中的很多类中看到 @Override 注解。我看了看,它既不存在于类中'Class ' 也不是类 'String'。

这些是我检查的仅有的两个,但假设 JCL 中的所有类都是这种情况,为什么它们不使用 @Override 注释?

是性能原因吗?
是不是因为类是在引入@Override之前编写的?

我的印象是自由使用 @Overridegood programming practice .

最佳答案

理解了为什么使用@Override就可以理解了。问题是它只为子类维护者提供好处。

主要用法如下:库A有一个类SecurityManager,它有方法allowed。 Bob 在他的项目中使用了 A,他扩展了 SecurityManager,并在他的代码中覆盖了 allowed。然而,allowed 仅由 SecurityManager 的内部逻辑使用,因此 Bob 从未在他的代码中调用它,但他依赖该库将使用他的实现而不是基本的。然后该库的维护者创建了一个新的主要版本,进行了一些重大更改 - 并将该方法重命名为 isAllowed。 Bob 下载了新版本,编译器对他说“@Override 没有覆盖任何东西——重新检查你的代码”,Bob 看到那个方法的名字改变了,并修复了它。

但是 java 是向后兼容的,所以期望 toString 在某个时间点被删除或重命名是没有意义的。这就是为什么为 Object 的方法添加 @Override 没有意义。

关于java - 为什么 JCL 中的类不在其 `@Override` 方法上显式使用 `toString()`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com