自定义注解应用小例子

一、自定义注解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种异常

处理方法:改变字符集

 运行正常:

相关文章
相关标签/搜索