一、自定义注解html
package com.ljb.app.annotation;// 复制到bin目录下时这个包得删去 import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 自定义代成员注解 * 能够修饰类、方法,保存到运行时,在javadoc中生成文档,子类继承 * @author LJB * @version 2015年3月4日 */ @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public @interface MyAnnotation { // 有默认值 String name() default "张三"; // 不带默认值 int age(); }
二、使用自定义注解java
package com.ljb.app.annotation;// 复制到bin目录下时得删去 /** * 测试类 * @author LJB * @version 2015年3月4日 */ @MyAnnotation(age=19) public class TestAnnotation { @MyAnnotation(age=20) public void test() {}; }
三、生成javadoc文档步骤app
3.1 将TestAnnotation.java和MyAnnotation.java复制到jdk的bin目录下测试
如图:spa
3.2 在窗口中运行TestAnnotation.javacode
3.3 在bin目录下找到TestAnnotation.html打开htm
四、使用@Inherited注解,子类将继承父类的注解继承
4.1 建立TestAnnotation.java的子类文档
package com.ljb.app.annotation; /** * 建立TestAnnotation的子类,查看是否继承父类的注解 * @author LJB * @version 2015年3月5日 */ public class TestAnnotationSon extends TestAnnotation{ /** * @param args */ public static void main(String[] args) { // 利用反射获取子类使用注解信息 System.out.println(TestAnnotationSon.class.isAnnotationPresent(MyAnnotation.class)); } }
运行结果:true get
标识子类继承父类注解
五、异常处理
5.1 前面提到默认没有包,删除包
5.2 第2种异常
处理方法:改变字符集
运行正常: