1. 程式人生 > >黑馬程式設計師_java基礎加強學習筆記之註解

黑馬程式設計師_java基礎加強學習筆記之註解

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ----------

JDK1.5新特性:註解(Annotation)

註解及Java的幾個基本註解
註解[email protected]方法過時
一個方法建立後,後期可能會將該方法過時處理,不過不能刪除該方法,因為有的使用者可能還在使用該方法所以可使用註解宣告該已經過時。

@Deprecated

    public static void sayHello() {
       System.out.println("hi,傳智播客");
    }
註解[email protected]覆蓋(重寫)父類的方法。
如果沒有覆蓋父類方法,Eclipse會提示錯誤,如下,本來是想覆蓋父類的toString方法,結果多寫的一個字元s,所以Eclipse提示錯誤:

@Override
    public String tosString() {
       return null;
    }
註解[email protected]去除過時的API警告。
當使用過時的方法時,Eclipse會給該方法劃線,並提示過時。在命令列中編譯帶有過時方法的類,會有警告提示,使用註解可以去掉該警告。

@SuppressWarnings("deprecation")
    public static void main(String[] args) {
       System.runFinalizersOnExit(true);

    }

總結:註解相當於一個標記,在程式中加了註解就等於給程式打上某種標記。javac編譯器、開發工具和其他程式可以用反射來了解你的類及各種元素上有無何種標記,就可以幹相應的事,例如對於過時的方法,就劃上刪除線。註解可以加在包、類、欄位、方法、方法引數以及區域性變數上。在java.lang包下通過了最基本的annotation。

註釋應用結構圖:
註解類@interface A{}  

應用註解類@A
    Class B{}
對應用註解類進行反射操作的類Class C{
B.class.isAnnotionPerson(A.class);
A a = B.class.getAnnotion(A.class);
}
註解分三個階段生命週期:即class檔案階段、原始檔階段、執行階段(記憶體中位元組碼階段)。
如:(   @Override、@SuppressWarnings)註解都是保留在原始檔階段。而@Deprecated註解保留到執行階段。
@Retention
原始檔:@Retention(RetentionPolicy.SOURCE)

class檔案:@Retention(RetentionPolicy.SOURCE)
記憶體位元組碼:@Retention(RetentionPolicy.SOURCE)
@Target::用於說明該註解類只能使用在某種成分上。如:
@Target(ElementType.METHOD):表示註解類只能使用在方法上,如果不是使用在方法上,就會報錯。
@Target(ElementType.TYPE):表示註解類只能使用在類上。
@Target({ElementType.TYPE, ElementType.METHOD})表示註解類既能使用在類上,也能使用在方法上。

主函式
//使用註解類
@ItcastAnnotation
public class AnnotationDemo {

    public static void main(String[] args) {
       //檢查AnnotationDemo類上是否存在註解ItcastAnnotation
       if(AnnotationDemo.class.isAnnotationPresent(ItcastAnnotation.class)) {
           //獲得註解
           ItcastAnnotation annotation = (ItcastAnnotation) AnnotationDemo.class.getAnnotation(ItcastAnnotation.class);
           System.out.println(annotation);
       }
    }
}
//元註解:(註解的註解) 該註解是在註解類上新增的,所以叫元註解,這裡是表示註解的的生命週期在runtime。
//java編譯器在編譯java檔案時,會把註解去除掉,執行時這些註解就不存在了,為了讓這些在執行時存在,所以使用上述的註解,告訴編譯器將這些註解保留到class檔案中。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
//註解類
public @interface ItcastAnnotation {
}

為註解增加基本屬性
個註解相當於學生的一個胸牌,如果你貼的胸牌就是傳智播客的學生,如果沒有胸牌就不是。如果還想區分出是傳智播客的哪個班,這時候就可以為胸牌增加屬性來進行區分,加了屬性的標記效果為@MyAnnotation(color=”red”)
定義基本型別的屬性和應用屬性:
在註解類中增加String color();使用屬性@MyAnnotation(color=”red”)         用反射方式獲得註解對應的例項物件後,在通過該物件呼叫屬性對應的方法MyAnnotation a = (MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);System.out.println(a.color());可以認為上面這個@MyAnnotation是 MyAnnotation類的一個例項物件。為屬性指定預設值:String color()default "yellow";value屬性:String value()default"zl";
如果註解中有一個名稱為value的屬性,你只想設定value屬性。,那麼可以省略value=部分。如:@MyAnnotation("zy")。
為註解增加高階屬性
陣列型別的屬性
int[] arrayAttr() default{1,2,3};
@MyAnnotation(arrAttri={2, 3, 4})
如果陣列是屬性只有一個元素,只適合屬性值部分可以省略大括號。陣列型別註解也可以指定預設值。
列舉型別的屬性
EnumTest.TrafficLamp lamp();
@MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)

註解型別的屬性
MetaAnnotationannotationAttri() default @MetaAnnotation(“xxx”)
@MyAnnotation([email protected](“yyy”))

可以認為上面@MyAnnotation是MyAnnotation類的一個例項物件,同樣道理,可以認為上面這個@MetaAnnotation是MetaAnnotation類第一個例項物件。
MetaAnnotation ma = myAnnotation.annotationArrti();

System.out.println(ma.value());

注意:註解的返回值型別只能是:8個基本資料型別、String型別、class型別、列舉型別、註解型別,還可以是這些型別的陣列型別。如果不是這些型別,編譯器就會報錯。

相關推薦

黑馬程式設計師_java基礎加強學習筆記註解

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">j

黑馬程式設計師_java基礎學習筆記(建構函式&構造程式碼塊&靜態程式碼塊)的區別

在基礎學習中,我常常會概念模糊,特作此學習筆記,進行一下對比,思路自然就清晰了。 建構函式 建構函式定義:建構函式是與類名相同,但沒有返回值的函式。 例子: class Person {     //建構函式     public Person() {} } 作用:

黑馬程式設計師_基礎加強_Java執行緒通訊和執行緒併發庫

 ------- android培訓、java培訓、期待與您交流! ---------- java5的執行緒鎖技術 Lock&Condition實現執行緒同步通訊 Lock比傳統的synchronized方式更加面向物件,兩個執行緒執行的程式碼塊要實現同步互斥,

黑馬程式設計師_java基礎——異常及遞迴

黑馬程式設計師------- android培訓、java培訓、期待與您交流! ---------- 1:異常 (1)程式出現的不正常情況。(2)異常的體系結構:Throwable:Error:是嚴重的問題。比如記憶體溢位等。要改程式碼。Exception:非Runt

黑馬程式設計師05-Web前端學習筆記

部分資源地址 綠葉學習網 前端開發系統化學習,包括html、css、PC端及移動端佈局技巧、javascript、jquery、js特效製作、ajax前後臺互動等。 HTML 一個HTML文件由4個基本部分組成: ① 一個文件宣告:<!DOC

黑馬程式設計師-java基礎加強-反射的深入講解

-------------------------ASP.Net+Unity開發、.Net培訓、期待與您交流!-------------------------- 透徹分析反射的基礎_Class類 Class類1、定義java程式中的各個java類也屬於同一類事物,而描述這

黑馬程式設計師---java基礎加強 反射的深入理解

=================第5單元:反射的深入講解=============== 17.透徹分析反射的基礎_Class類 反射的基礎: Class也就是每個java源程式通過編譯後生成的檔案載入進入記憶體的那個位元組碼檔案, 獲取到該位元組碼,就可以獲取

黑馬程式設計師_Java基礎(Java概述,關鍵字,識別符號,註釋,常量,變數

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! ------- 人生沒有選擇題,只有證明題,每天都在奮鬥的

黑馬程式設計師_java基礎知識二

---------------------android培訓、java培訓、java學習型技術部落格、期待與您交流! ------------------- 今天是來傳智學習上式上課的第四天了,從開學的第一天開始,主要安排的內容都是java基礎入門的一些知識,因為來學習的

黑馬程式設計師基礎加強---eclipse加強

Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了)Ctrl+D: 刪除當前行 Ctrl+Alt+↓ 複製當前行到下一行(複製增加)Ctrl+Alt+↑ 複製當前行到上一行(複製增加)Alt+↓ 當前行和下面一行互動位置(特別實用,可以省去先剪下,再貼上了)Alt+↑ 當前行和上面一行互動位置(同上)Alt

黑馬程式設計師—java基礎加強—內省、註解、泛型

---------------------- android培訓、java培訓、期待與您交流! -------------------- 內省:IntroSpector——》JavaBean——特殊的Java類 當Java執行時可檢查自身,Java 程式中詢問它的一個物

黑馬程式設計師基礎加強註解和泛型

---------------------- android培訓、java培訓、期待與您交流! ----------------------瞭解註解及Java提供的幾個基本註解:註解相當於一種標記,加了註解就等於打上了

黑馬程式設計師_基礎加強註解

---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ---------------------- 註解(annotation)是jdk1.5的新特性 瞭解註解及java提供的幾個基本註解 1)  先通過@S

黑馬程式設計師基礎加強---註解

------- android培訓、java培訓、期待與您交流! ---------- 元註解:   元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation型別,它們被用來提供對其它 annotation型別作說明。Java5.

黑馬程式設計師_java基礎_集合框架

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>

黑馬程式設計師---java基礎加強---jdk1.5新特性註解

----------- android培訓、java培訓、java學習型技術部落格、期待與您交流! ----------- 註解(Annotation ) 是JDK 1.5 的新特性,現已應用於Spring , EJB ,JPA... 使用註解是一種趨勢。它可以用於建立

黑馬程式設計師_Java學習筆記7K面試題交通等管理系統

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">

黑馬程式設計師——java基礎學習筆記——第二天

1..常量與變數: 常量表示不能改變的數值。Java中常量的分類: 1.整數常量。所有整數2.小數常量。所有小數3.布林型常量。較為特有,只有兩個數值。true false。4.字元常量。將一個數字字母或者符號用單引號( ' ' )標識。5.字串常量。將一個或者多個字元

黑馬程式設計師_Java學習日記2_面向物件總結1

----------------------android培訓、java培訓、期待與您交流! --------------------- 1.關於main函式的講解 主函式,是一個特殊的函式,作為程式的入口,可以被jvm呼叫。 主函式的定義: public:代表該函式的許

黑馬程式設計師_Java學習日記25_高新技術4

----------------------android培訓、java培訓、期待與您交流! --------------------- 泛型 1.入門泛型的基本應用 JDK1.5的集合類希望你在定義集合時,明確表示你要向集合中儲存哪種型別的資料,無法加入指定型別以外的