我只是想编写一些注释,它可以在调用服务方法之前或之后立即执行。
我不知道它们是在运行时还是在编译时执行。
答案 0 :(得分:11)
注释不会执行;它们是各种工具读取的笔记或标记。有些是由编译器读取的,如@Override
;其他的都嵌入在类文件中,并在运行时通过Hibernate等工具读取。但他们自己也没有做任何事。
您可能会想到assertions,可以用来验证前后条件。
答案 1 :(得分:8)
实际上,在定义注释时,必须指定参数@Retention
,该参数定义注释在源代码(SOURCE),类文件(CLASS)或运行时是否可用( RUNTIME)。
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}
答案 2 :(得分:7)
注释只是标记。他们不执行任何事情。
您可以指定不同的保留政策:
更多信息:http://www.java2s.com/Tutorial/Java/0020__Language/SpecifyingaRetentionPolicy.htm
答案 3 :(得分:3)
注释对您的代码没有影响,它们是为了提供由编译器或其他工具评估的信息。
注释有许多用途,其中包括:
编译器的信息 - 编译器可以使用注释来检测错误或抑制警告。
编译时和部署时处理 - 软件工具可以处理注释 用于生成代码,XML文件等的信息。
运行时处理 - 可以在运行时检查某些注释。
请参阅此page。
答案 4 :(得分:1)
这取决于该注释附带的保留政策。
保留策略确定应在何时注释 丢弃。 Java通过以下三种方式定义了保留策略 java.lang.annotation.RetentionPolicy枚举。
它具有SOURCE,CLASS和RUNTIME。
带有保留策略SOURCE的注释将仅与 源代码,并在编译时丢弃。
具有保留策略CLASS的注释将保留到
编译代码,并在运行时丢弃。
具有保留策略RUNTIME的注释将可用于 通过运行时的JVM。
将使用内置的Java指定保留策略 注释@Retention,我们必须通过保留政策 类型。
默认保留策略类型为CLASS。
答案 5 :(得分:0)
实际上,它们可以在两种环境中读取,具体取决于您设置的保留策略。
答案 6 :(得分:0)
注释只是源代码中的标记。它们将被IDE,编译器或注释处理器等工具使用。
如果应在源,类或运行时中评估注释,则可以使用@Retention进行定义。
如果您想要定义自己的注释,并且只知道注释应该做什么,那么您也应该编写注释处理器。 (但这不简单 - 也许)