编译器的使用

2021-05-06  本文已影响0人  老林_

编码问题

//使用-encoding utf-8
javac -encoding utf-8 com/ly/annotation/test1/annotations/Main.java
java com.ly.annotation.test1.annotations.Main

指定输出的文件夹

javac -encoding utf-8 -d ./classes com\ly\annotation\test1\annotations\Main.java

关于注解的解释

1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
2.RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
3.RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用.
作者:氨基钠
链接:https://www.jianshu.com/p/8738ce6bd771
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

例子如图
CLASS和RUNTIME下编译的class的


image.png

SOURCE下编译的class文件

(1).SOURCE:在源文件中有效(即源文件保留)编译成class文件将舍弃该注解。
(2).CLASS:在class文件中有效(即class保留) 编译成dex文件将舍弃该注解。
(3).RUNTIME:在运行时有效(即运行时保留) 运行时可见。
也就是说注解处理器能处理这三类的注解,我们通过反射的话只能处理RUNTIME类型的注解.
官方解释:指示注释类型的注释要保留多久。如果注释类型声明中不存在 Retention 注释,则保留策略默认为 RetentionPolicy.CLASS。

上一篇 下一篇

猜你喜欢

热点阅读