Java库中缺少@Override
这被认为是一个很好的实践 在中被重写的方法上使用@Override注释 子类 但为什么Java库附带的类不适用相同的规则呢。例如字符串类。它覆盖对象类的方法,但不在这些方法上使用@Override注释 这样做是为了保持与Java早期版本(如1.4等)的向后兼容性吗Java库中缺少@Override,java,inheritance,annotations,jvm,Java,Inheritance,Annotations,Jvm,这被认为是一个很好的实践 在中被重写的方法上使用@Override注释 子类 但为什么Java库附带的类不适用相同的规则呢。例如字符串类。它覆盖对象类的方法,但不在这些方法上使用@Override注释 这样做是为了保持与Java早期版本(如1.4等)的向后兼容性吗 感谢这并不是一个装饰性的注释,它在生成文档、通过Java IDE给出提示以及在重写方法时显式声明时非常有用 从运行时/标准库实现者的角度来看,仅仅为了添加一些装饰性的内容而修改所有现有类是不值得的 此外,关于注释的向后兼容性,考虑到注
感谢这并不是一个装饰性的注释,它在生成文档、通过Java IDE给出提示以及在重写方法时显式声明时非常有用 从运行时/标准库实现者的角度来看,仅仅为了添加一些装饰性的内容而修改所有现有类是不值得的 此外,关于注释的向后兼容性,考虑到注释是
.class
文件中存在的可选和扩展属性(当它们的保留策略是class
或运行时
且可用于类
和方法
作为运行时(in)使用时)VisibleAnnotations
和对于参数
作为运行时(In)VisibleParameterAnnotations
),JVM的早期版本将在第一次需要该类时执行的文件解析期间忽略该属性
但实际上,,1.4 JVM类解析器甚至不会到达那些注释.class
属性位于结构内部的位置,因为当JVM注意到.class
版本大于支持的版本时,解析将突然结束。@override注释用于提供一些额外信息,主要是在生成文档时,也用于通知开发人员代码打算重写超类中的方法
oracle文档中提到了这一点
@Override@Override注释通知编译器元素
用于重写超类中声明的元素。最重要的
方法将在接口和继承中讨论
//将方法标记为超类方法//已
Overrided@Override int OverridedEndMethod(){}
而在重写时不需要使用此注释
方法,它有助于防止错误。如果使用@Override标记的方法
无法正确重写其超类之一中的方法
编译器生成一个错误
在一个API中,它不会为用户(该API的用户)提供太多。然而,当您实现一个方法,并且您“打算”重写一个超类的方法时,很容易错过应该匹配的方法签名
在这种情况下,将在编译时进行救援,当重写未发生时,它将失败或发出警告。此外,许多IDE都能识别并提供足够的支持,以便在编译之前标记和纠正这些情况
因此,本质上声明了您的意图,即此方法覆盖某些内容。只要API有效,它的用户就不会在意您的意图是什么
实际上,可能真正的原因是:注释的。这意味着在编译到类文件时将丢弃该标志
@Target(value=METHOD)
@Retention(value=SOURCE)
public @interface Override
先生,我的这个问题与您何时使用Java的覆盖注释以及为什么使用这个问题不同?因为我需要问为什么Java中不使用覆盖Libraries@Ankit首先是库,然后是注释。他们可能没有一个毕业生或实习生来检查整个库代码,只是为了添加覆盖注释:P@Ankit你可能是对的——看起来完全不同——放弃索赔。谢谢你的回答先生谢谢你的回答先生