javadoc详解 annotation详解

2019-09-10 23:10:00
admin
原创 1353
摘要:javadoc详解 annotation详解

一、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类型注解,如无注解返回长度是0的数组;

getAnnotation,获取指定类型注解,不包括Repeatable类型注解,配合isAnnotationPresent方法使用;

getAnnotationsByType,获取指定类型注解,包括Repeatable类型注解,如无注解返回长度是0的数组;


JDK自带注解:

@Override,标识方法有重写父类方法或者实现接口方法,否则编译器报错;

@Deprecated,标识方法已经过时,提示用户不要继续使用;

@SuppressWarnings,禁止编译器显示指定告警;

发表评论
评论通过审核之后才会显示。