程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java學習筆記-注解,java學習筆記注解

Java學習筆記-注解,java學習筆記注解

編輯:JAVA綜合教程

Java學習筆記-注解,java學習筆記注解


注解毫無疑問是一個很好玩的特性,之前看書的時候也沒有太過注意,最近看Spring實戰的時候又看到了自定義注解,於是忍不住把Java編程思想掏出來重新看了下注解這章,順帶記個筆記

注解的形式就是代碼裡寫的比如

@Override

這樣的代碼

和注釋相比較,最主要的也是最有趣的地方在於注解可以自定義,而且也可以使用反射來調用被注解的類,方法

在Java裡創建自定義注解的格式如下

/*
* file:Test.java
*/
package javaapplication;
import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
    public int id();
    public String text() default "Null";
}

於是我們就可以在代碼裡使用注解了,比如這樣

/*
* file:JavaApplication.java
*/
package javaapplication;
import java.lang.reflect.Method;
    class TestObject {
        @Test(id = 233,text = "Hello")
        public void testA(int id,String text){
            System.out.println("id:"+id+"\ttext:"+text);
        }
        @Test(id = 10)
            public void testB(int id,String text){
            System.out.println("id:"+id+"\ttext:"+text);
        }
}
public class JavaApplication {
    public static void main(String[] args) throws Exception{
        TestObject to = new TestObject();
        //通過反射來使用注解裡的數據動態調用方法
        for (Method m : TestObject.class.getDeclaredMethods()) {
            Test t = m.getAnnotation(Test.class);
            if (t != null) {
                m.invoke(to, t.id(),t.text());
            }
        }
    }
}

簡單說了說注解的寫法,然後來談談元注解

元注解就是用來注解注解的注解,恩,我故意說這麼繞的

就是@Target之類的,具體Java編程思想上給出下表

@Target

表示該注解可以用於什麼地方。可能的ElementType參數包括:

  • CONSTRUCTOR:構造器的聲明
  • FIELD:域聲明(包括enum實例)
  • LOCAL_VARIABLE:局部變量聲明
  • METHOD:方法聲明
  • PACKAGE:包聲明
  • PARAMETER:參數聲明
  • TYPE:類、接口(包括注解類型)或enum聲明
@Retention

表示需要在什麼級別保存注解信息。可選的RetentionPolicy參數包括:

  • SOURCE:注解將被編譯器丟棄
  • CLASS:注解在class文件中可用,但會被VM丟棄
  • RUNTIME:VM將在運行期也保留注解,因此可以通過反射機制讀取注解的信息
@Documented 將此注解包含在Javadoc中 @Inherited 允許子類繼承父類中的注解

 

另外,注解元素支持以下類型

  • 所有基本類型(int,float,boolean等)
  • String
  • Class
  • enum
  • Annotation
  • 以上類型的數組

注解簡單的筆記就到這裡結束了

注解還可以用apt處理,用於觀察者模式,用於單元測試等等,更加詳細的說明歡迎閱讀《Java編程思想》第20章-注解

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved