Answers:
@Override最初不是使用该语言编写的。当需要添加它时,使用通用机制(注释)要比向语言添加新关键字要容易得多。添加新关键字始终是不兼容的更改,因为它可能破坏使用该单词作为标识符的程序。
从一开始就添加了覆盖标记的语言中,通常是一个关键字(例如Kotlin和Scala),而在Java中,这是与没有任何覆盖标记的Java版本保持向后兼容的问题。
default
已经是保留关键字(在switch语句中使用)-他们只是为其添加了新用法。还有一些关键字目前不执行任何操作,但保留以备将来使用(const,goto)-参见JLS§3.9
enum
添加的关键字会破坏旧代码。此处还有更多突破性的关键字:stackoverflow.com/questions/16506411
您不需要@Override批注实际覆盖行为。这是一个注释,因为它只是为编译器添加了方法意图的某些上下文,而没有更改方法本身。
如果没有注释,您可能打算覆盖功能,但是偶然地失败了(通过使用稍微不同的签名)。如果此方法实际上未覆盖行为,则添加注释将告知编译器生成错误。
因此,将其作为注释非常有意义。