1. 程式人生 > 遊戲 >微軟前高管透露20年前收購任天堂提議背後的原因

微軟前高管透露20年前收購任天堂提議背後的原因

技術標籤:Java學習欄目java介面反射

註解

什麼是註解:也叫元資料,一種程式碼級別的說明。
	它是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);
}

執行結果