您好,登錄后才能下訂單哦!
Java
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
在學習Java基礎語法的時候,初學者常常會分不清注解與注釋的區別。其實注解和注釋是完全不一樣的兩個概念。簡單來講,注釋就是方便自己或他人閱讀代碼,對編程思路或程序作用的解釋說明。而注解則是代碼里的特殊標記,是給編譯器閱讀的元數據。本文將為大家詳細講解一下Java基礎語法中有關注解的相關知識點,需要學習的小伙伴可以跟著文章一起來梳理一遍知識點。
1、注解的概念
可以看作是對 一個 類/方法 的一個擴展的模版,每個 類/方法 按照注解類中的規則,來為 類/方法 注解不同的參數,在用到的地方可以得到不同的 類/方法 中注解的各種參數與值
注解也就是Annotation,相信不少人也和我之前一樣以為和注釋和doc一樣,是一段輔助性的文字,其實注解不是這樣的。
從JDK5開始,java增加了對元數據(描述數據屬性的信息)的支持。其實說白就是代碼里的特殊標志,這些標志可以在編譯,類加載,運行時被讀取,并執行相應的處理,以便于其他工具補充信息或者進行部署。
2、注解的作用分類
(1)編寫文檔:通過代碼里標識的注解生成文檔【生成文檔doc文檔】
(2)代碼分析:通過代碼里標識的注解對代碼進行分析【使用反射】
(3)編譯檢查:通過代碼里標識的注解讓編譯器能夠實現基本的編譯檢查【Override】
3、JDK中預定義的一些注解
(1)@Override:檢測被該注解標注的方法是否是繼承自父類(接口)的
(2)@Deprecated:該注解標注的內容,表示已過時
(3)@SuppressWarnings:壓制警告
(4)一般傳遞參數all @SuppressWarnings("all")
4、自定義注解
(1)格式:
元注解
public @interface 注解名稱{
屬性列表;
}
(2)本質:注解本質上就是一個接口,該接口默認繼承Annotation接口
public interface MyAnno extends java.lang.annotation.Annotation {}
(3)屬性:接口中的抽象方法
(4)要求:
a、屬性的返回值類型有下列取值
基本數據類型
String
枚舉
注解
以上類型的數組
b、定義了屬性,在使用時需要給屬性賦值。如果定義屬性時,使用default關鍵字給屬性默認初始化值,則使用注解時,可以不進行屬性的賦值。如果只有一個屬性需要賦值,并且屬性的名稱是value,則value可以省略,直接定義值即可。數組賦值時,值使用{}包裹。如果數組中只有一個值,則{}可以省略
5、元注解:用于描述注解的注解。
@Target:描述注解能夠作用的位置
ElementType取值:
TYPE:可以作用于類上
METHOD:可以作用于方法上
FIELD:可以作用于成員變量上
@Retention:描述注解被保留的階段
@Retention(RetentionPolicy.RUNTIME):當前被描述的注解,會保留到class字節碼文件中,并被JVM讀取到
@Documented:描述注解是否被抽取到api文檔中
@Inherited:描述注解是否被子類繼承
6、在程序使用(解析)注解:獲取注解中定義的屬性值
(1)獲取注解定義的位置的對象 (Class,Method,Field)
(2)獲取指定的注解
getAnnotation(Class)
//其實就是在內存中生成了一個該注解接口的子類實現對象
public class ProImpl implements Pro{
public String className(){
return "cn.itcast.annotation.Demo1";
}
public String methodName(){
return "show";
}
}
(3)調用注解中的抽象方法獲取配置的屬性值。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。