gpt4 book ai didi

java - 像 @Override 这样的注解在 Java 内部是如何工作的?

转载 作者:IT老高 更新时间:2023-10-28 11:49:14 24 4
gpt4 key购买 nike

谁能向我解释一下注解在 java 内部是如何工作的?

我知道如何在 java 中使用 java.lang.annotation 库创建自定义注释。但我仍然不明白它在内部是如何工作的,例如 @Override 注释。

如果有人能详细解释一下,我将非常感激。

最佳答案

注解类型之间的第一个主要区别是它们是在编译时使用然后被丢弃(如@Override)还是放置在已编译的类文件中并在运行时可用(如Spring的@组件)。这是由 @Retention 决定的。注释的策略。如果您正在编写自己的注解,则需要确定该注解是在运行时有用(可能用于自动配置)还是仅在编译时有用(用于检查或代码生成)。

编译带有注解的代码时,编译器看到注解就像看到源元素上的其他修饰符一样,例如访问修饰符 (public/private) 或 最终。当它遇到一个注解时,它会运行一个注解处理器,它就像一个插件类,它表示它对特定的注解感兴趣。注释处理器通常使用反射 API 来检查正在编译的元素,并且可以简单地对它们运行检查、修改它们或生成要编译的新代码。 @Override 是第一个例子;它使用反射 API 来确保它可以在其中一个父类(super class)中找到方法签名的匹配项,如果不能,则使用 Messager 导致编译错误。

有许多关于编写注释处理器的教程; here's a useful one .查看the Processor interface上的方法编译器如何调用注解处理器;主要操作发生在 process 方法中,每次编译器看到具有匹配注解的元素时都会调用该方法。

关于java - 像 @Override 这样的注解在 Java 内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com