<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java 注解 > 原文: [https://www.programiz.com/java-programming/annotations](https://www.programiz.com/java-programming/annotations) #### 在本教程中,我們將通過示例學習什么是注解,不同的 Java 注解以及如何使用它們。 Java 注解是程序源代碼的元數據(有關數據的數據)。 它們向編譯器提供有關程序的其他信息,但不屬于程序本身。 這些注解不影響編譯程序的執行。 注解以`@`開頭。 其語法為: ```java @AnnotationName ``` * * * 讓我們以`@Override`注解為例。 `@Override`注解指定已用此注解標記的方法覆蓋具有相同方法名稱,返回類型和參數列表的超類方法。 覆蓋方法時,并非必須使用`@Override`。 但是,如果使用它,則在覆蓋該方法時,如果出現錯誤(例如錯誤的參數類型),則編譯器將給出錯誤。 ### 示例 1:`@Override`注解示例 ```java class Animal { public void displayInfo() { System.out.println("I am an animal."); } } class Dog extends Animal { @Override public void displayInfo() { System.out.println("I am a dog."); } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); d1.displayInfo(); } } ``` **輸出** ```java I am a dog. ``` 在此示例中,方法`displayInfo()`同時存在于超類`Animal`和子類`Dog`中。 調用此方法時,將調用子類的方法,而不是超類中的方法。 * * * ## 注解格式 注解也可以包括元素(成員/屬性/參數)。 ### 1.標記注解 標記注解不包含成員/元素。 它僅用于標記聲明。 其語法為: ```java @AnnotationName() ``` 由于這些注解不包含元素,因此可以排除括號。 例如, ```java @Override ``` * * * ### 2.單元素注解 單個元素注解僅包含一個元素。 它的語法是: ```java @AnnotationName(elementName = "elementValue") ``` 如果只有一個元素,則習慣上將該元素命名為`value`。 ```java @AnnotationName(value = "elementValue") ``` 在這種情況下,也可以排除元素名稱。 元素名稱默認為`value`。 ```java @AnnotationName("elementValue") ``` * * * ### 3.多元素注解 這些注解包含多個用逗號分隔的元素。 它的語法是: ```java @AnnotationName(element1 = "value1", element2 = "value2") ``` * * * ## 注解位置 通過將任何聲明置于該聲明之上,可以將其標記為帶有注解。 從 Java 8 開始,注解也可以放在類型之前。 ### 1.上方的聲明 如上所述,Java 注解可以放在類,方法,接口,字段和其他程序元素聲明的上方。 ### 示例 2:`@SuppressWarnings`注解示例 ```java import java.util.*; class Main { @SuppressWarnings("unchecked") static void wordsList() { ArrayList wordList = new ArrayList<>(); // This causes an unchecked warning wordList.add("programiz"); System.out.println("Word list => " + wordList); } public static void main(String args[]) { wordsList(); } } ``` **輸出**: ```java Word list => [programiz] ``` 如果上述程序在不使用`@SuppressWarnings("unchecked")`注解的情況下進行編譯,則編譯器仍將編譯該程序,但會給出如下警告: ```java Main.java uses unchecked or unsafe operations. Word list => [programiz] ``` 我們收到警告 ```java Main.java uses unchecked or unsafe operations ``` 由于以下語句。 ```java ArrayList wordList = new ArrayList<>(); ``` 這是因為我們尚未定義`ArrayList`的通用類型。 我們可以通過在尖括號`<>`中指定泛型來解決此警告。 ```java ArrayList<String> wordList = new ArrayList<>(); ``` * * * ### 2.類型注解 在 Java 8 之前,注解只能應用于聲明。 現在,也可以使用類型注解。 這意味著我們可以在使用類型的任何地方放置注解。 **構造器調用** ```java new @Readonly ArrayList<>() ``` **類型定義** ```java @NonNull String str; ``` 該聲明指定類型為`String`的非空變量`str`以避免`NullPointerException`。 ```java @NonNull List<String> newList; ``` 該聲明指定類型為`String`的非空列表。 ```java List<@NonNull String> newList; ``` 該聲明指定類型為`String`的非空值的列表。 **類型轉換** ```java newStr = (@NonNull String) str; ``` `extends`或`implements`子句 ```java class Warning extends @Localized Message ``` **`throws`子句** ```java public String readMethod() throws @Localized IOException ``` 類型注解使 Java 代碼可以得到更好的分析,并提供更強大的類型檢查。 * * * ## 注解類型 1\. **預定義的注解** 1. `@Deprecated` 2. `@Override` 3. `@SuppressWarnings` 4. `@SafeVarargs` 5. `@FunctionalInterface` 2\. **元注解** 1. `@Retention` 2. `@Documented` 3. `@Target` 4. `@Inherited` 5. `@Repeatable` 3\. **自定義注解** 這些注解類型在 [Java 注解類型](/java-programming/annotation-types "Java Annotation Types")教程中有詳細描述。 * * * ## 注解的使用 * **編譯器指令**-注解可用于向編譯器提供指令,檢測錯誤或禁止警告。 內置注解`@Deprecated`,`@Override`和`@SuppressWarnings`用于這些目的。 * **編譯時指令**-這些注解提供的編譯時指令可幫助軟件構建工具生成代碼,XML 文件等。 * **運行時指令**-可以定義一些注解以在運行時向程序提供指令。 這些注解是使用 Java 反射訪問的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看