有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我阅读了一些文档,发现Java中的@override和Python中的@decorator之间似乎存在某种关系

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    Java中的@override是一个注释,它将一个方法标记为覆盖另一个方法。所以当我扩展一个基类并覆盖它的某个方法时,我可以用@override注释这个方法。这对我的代码没有实际影响,只是给编译器一个提示。像马蒂恩·彼得斯所建议的那样,更多信息请参见What's "@Override" there for in java?

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

    与Java中的@decorator最相似的是定义一个注释,它可以像decorator一样工作,也可以使用AspectJ这样的库。然而,这不是核心Java语言的一部分,因为它根本不知道任何装饰器注释。装饰器和注释是两码事