Java中的@override和Python中的@decorator之间的区别

use*_*647 2 python java overriding decorator

我阅读了它的一些文档,并意识到@override在Java和@decoratorPython 之间似乎存在关系.

有人能用简单的英语解释这段关系吗?

我知道Python中的函数是第一类对象,函数可以是另一个函数的参数.

@overrideJava 中的这种语法与Python中的装饰器有何不同?

Tho*_*rig 13

@overrideJava和@decoratorPython 之间没有关系.

@override在Java中是一个注释,它将方法标记为覆盖另一个方法.因此,当我扩展基类并覆盖它的某些方法时,我可以使用它来注释此方法@override.这对我的代码没有实际影响,它只是编译器的一个提示.就像Martijn Pieters的建议一样,请参阅java中的"@Override"是什么?更多.

@decorator在Python中是一种设计模式.装饰器可以附加到方法以扩展其功能.如果调用方法,则之前将调用其装饰器.例如,您可以使用它来记录信息.我在项目中使用过一次来启用缓存.

与Java中的@decorator最相似的是定义一个自己的注释,它可以像装饰器一样工作,也可以使用像AspectJ这样的库.但是,这不是核心Java语言的一部分,它只是不知道任何装饰器注释.装饰器和注释是两个不同的东西.