【问题标题】:Difference between @override in Java and @decorator in PythonJava中的@override和Python中的@decorator之间的区别
【发布时间】:2014-04-23 21:38:11
【问题描述】:

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

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

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

Java 中的 @override 语法与 Python 中的装饰器有何不同?

【问题讨论】:

  • Java @Override 是一个编译器注解。除了与 Python @decorator 语法模糊相似之外,这两个概念之间没有其他相关性。

标签: java python overriding decorator


【解决方案1】:

Java 中的 @override 和 Python 中的 @decorator 之间没有关系。

@override 在 Java 中是一个注解,它将一个方法标记为覆盖另一个方法。所以当我扩展一个基类并覆盖它的一些方法时,我可以用@override注释这个方法。这对我的代码没有实际影响,它只是对编译器的提示。正如 Martijn Pieters 所建议的那样,请参阅 What's "@Override" there for in java? 了解更多信息。

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

与 Java 中的 @decorator 最相似的事情是定义一个可以像装饰器一样工作或使用 AspectJ 之类的库的注解。但是,这不是核心 Java 语言的一部分,它根本不知道任何装饰器注释。装饰器和注释是两个不同的东西。

【讨论】:

  • Martijn 还是 Pascal?
猜你喜欢
  • 2011-09-03
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 2016-09-02
相关资源
最近更新 更多