一、自定義註解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種異常
處理方法:改變字符集
運行正常: