javadoc详解 annotation详解
- 2019-09-10 23:10:00
- admin
- 原创 1889
一、javadoc详解
1、javadoc命令用于对源代码生成帮助文档;
2、javadoc命令会对源代码进行编译检查,整个包以及包依赖的文件,即使只是对包的一个文件生成文档;
3、javadoc注释格式/** ...... */,直接跟在星号后面的空格无作用,换行会导致注释增加空格,最多能增加一个空格;
4、输出内容是html,所以如果需要换行需要使用<br>标签;
5、注释包括三部分:摘要、详细说明、特殊说明(参数、返回、异常),摘要是第一个句号前的内容;
6、方法摘要位置显示摘要,方法详情位置显示所有信息;
7、@version以最后一个为准,@author可以写多个,需要在命令行指定-version和-author参数才能生效,@see参阅其他;
8、@link用于链接到其它帮助,@code用于标识代码,方便写一些特殊字符,比如<>;
9、-windowtitle title用于指定文档窗口标题,比如created by feinenxiang;
对指定包生成文档:javadoc -docencoding UTF-8 -d doc mvndemo
对指定文件生成文档:javadoc -docencoding UTF-8 -d doc mvndemo\Main.java
二、annotation详解
1、注解给Java代码提供元数据,不直接影响代码的执行,但可以在编译和运行时进行处理;
2、注解本质是继承Annotation的接口,可以包含属性申明Type name()或Type name() default value;
3、注解实例的class对象需要通过annotationType()方法获取,不能通过getClass()方法获取;
4、元注解是注解到注解上的注解,元注解是一种基本注解,能够应用到其他的注解上面;
元注解说明:
@Retention,指示注解的保留策略,默认RetentionPolicy.CLASS:
RetentionPolicy.SOURCE,只保留在源代码;
RetentionPolicy.CLASS,保留到class文件,运行时不需要加载;
RetentionPolicy.RUNTIME 保留到class文件,运行时加载到虚拟机;
@Target,限定注解可以作用的范围,默认所有范围:
ElementType.TYPE,作用于类、接口、枚举、注解;
ElementType.FIELD,作用于属性、枚举常量;
ElementType.METHOD,作用于方法,不能用于构造函数;
ElementType.PARAMETER,作用于参数;
ElementType.CONSTRUCTOR,作用于构造函数;
@Documented,表明注解被使用时会被javadoc处理,放置在对应元素详情位置;
@Inherited,表明父类注解会被子类继承,父接口注解不会被子接口继承,实现类不继承接口的注解;
@Repeatable,JDK1.8开始支持,表明注解可以多次作用同一个对象;
注解获取:
getAnnotations,获取所有注解,不包括Repeatable类型注解,无注解时返回长度是零的数组;
getAnnotation,获取指定类型注解,不包括Repeatable类型注解,配合isAnnotationPresent方法使用;
getAnnotationsByType,获取指定类型注解,包括Repeatable类型注解,无注解时返回长度是零的数组;
JDK自带注解:
@Override,标识方法有重写父类方法或实现接口方法;
@Deprecated,标识方法已经过时,提示用户不要继续使用;
@SuppressWarnings,抑制编译器显示指定告警;
@SuppressWarnings("all"),抑制所有告警;
@SuppressWarnings("unused"),抑制代码未使用告警;
@SuppressWarnings({"unused","null"}),抑制多种告警;