微軟前高管透露20年前收購任天堂提議背後的原因
阿新 • • 發佈:2021-02-01
註解
什麼是註解:也叫元資料,一種程式碼級別的說明。
它是JDK1.5以後引入的一個特性,與類、介面、列舉在同一個層次。
它可以宣告在包、類、欄位、方法、區域性變數、引數列表等前面,用來對這些元素進行說明、註釋。
有哪些註解:
JDK中預定義的一些註解
自定義的註解
註解有什麼用:
1.編寫文件:生成文件doc
/**
* @since 1.5
* @author husuting
* @version 1.0
*/
public class Demo1 {
/**
* 計算兩數之和
* @param a 整數
* @param b 整數
* @return 兩數之和
*/
public int add(int a,int b){
return a + b;
}
}
2.程式碼分析:對程式碼進行分析---使用註解
3.編譯檢查:通過程式中的註解讓編譯器實現基本的編譯檢查
基本註解
@override:監測被該註解標註的方法是否繼承自父類
@Deprecated:該註解標註的內容,已過時,有更好的替代方法
@SuppressWarinings:壓制警告
@SuppressWarnings("all")//壓制所有的警告 一般傳遞引數all
public class Demo2 {
@Override
public String toString(){
return super.toString();
}
@Deprecated
public void show1(){
//有缺陷
}
public void show2(){
//替代show1方法
}
public void demo(){
show1();//已經過時 但還是可以使用 因為要相容低版本
show2();
}
}
自定義註解
格式: 元註解: public @Interface 註解名稱(){} public @interface Demo3 {} 本質:本質就是一個介面,該介面預設繼承Annotation介面 屬性:介面中可以定義的方法,介面中的抽象方法,要給屬性賦值 如果定義屬性時,使用default關鍵字給屬性預設初始化值,則使用預設值 如果只有一個屬性,且這個屬性的名稱是value,則value可以省略。
@Demo3(show2 = 1,name = "12")
public @interface Demo3 {
String name();//抽象方法是註解的屬性
int show2();
}
元註解
用來描述註解的註解
@Target()//描述註解能夠作用的範圍
@Retention()//描述註解保留的階段
@Documented//註解是否被抽取到api文件
@Inherited//描述註解是否被子類繼承
/*
@Target()//描述註解能夠作用的範圍
@Target(value={ElementType.TYPE})//只能作用在類上
@Target(value={ElementType.FIELD})//只能作用在成員變數上
@Target(value={ElementType.METHOD})//只能作用在方法上
@Retention()//描述註解保留的階段
@Retention(RetentionPolicy.CLASS)在原始碼中保留JVM不可以讀取
@Retention(RetentionPolicy.RUNTIME)在執行時保留JVM可以讀取
@Retention(RetentionPolicy.SOURCE)載入過程中保留
@Documented//註解是否被抽取到api文件
@Inherited//描述註解是否被子類繼承
*/
@Target(value={ElementType.TYPE})//只能作用在類上
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Demo3 {
String name();//抽象方法是註解的屬性
int show2();
}
解析註解
註解到底有什麼用,獲取值
//@Demo3(show2 = 1,name = "12")
public static void main(String[] args) {
Class<Demo2> demo2Class = Demo2.class;//將進行了註解的類進行解析
//即將被註解註釋的類進行解析
String name = demo2Class.getAnnotation(Demo3.class).name();//獲取註解中的值
System.out.println(name);
}