中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java注解的基本原理是什么

發布時間:2021-11-24 16:50:17 來源:億速云 閱讀:136 作者:iii 欄目:大數據

本篇內容介紹了“Java注解的基本原理是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

注解目前非常的流行,很多主流框架都支持注解,而且自己編寫代碼的時候也會盡量的去用注解,一時方便,而是代碼更加簡潔。

注解的語法比較簡單,除了@符號的使用之外,它基本與Java固有語法一致。Java SE5內置了三種標準注解:

  • @Override,表示當前的方法定義將覆蓋超類中的方法。

  • @Deprecated,使用了注解為它的元素編譯器將發出警告,因為注解@Deprecated是不贊成使用的代碼,被棄用的代碼。

  • @SuppressWarnings,關閉不當編譯器警告信息。

上面這三個注解多少我們都會在寫代碼的時候遇到。Java還提供了4中注解,專門負責新注解的創建。

定義一個注解的方式:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
  
}
 

除了@符號,注解很像是一個接口。定義注解的時候需要用到元注解,上面用到了@Target和@RetentionPolicy,它們的含義在上面的表格中已近給出。

在注解中一般會有一些元素以表示某些值。注解的元素看起來就像接口的方法,唯一的區別在于可以為其制定默認值。沒有元素的注解稱為標記注解,上面的@Test就是一個標記注解。推薦:SpringBoot核心注解原理,這些都是要熟知的!

注解的可用的類型包括以下幾種:所有基本類型、String、Class、enum、Annotation、以上類型的數組形式。元素不能有不確定的值,即要么有默認值,要么在使用注解的時候提供元素的值。而且元素不能使用null作為默認值。

注解在只有一個元素且該元素的名稱是value的情況下,在使用注解的時候可以省略“value=”,直接寫需要的值即可。

下面看一個定義了元素的注解。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase {
     public String id();
     public String description() default "no description";
}
 

定義了注解,必然要去使用注解。

public class PasswordUtils {
     @UseCase(id = 47, description = "Passwords must contain at least one numeric")
     public boolean validatePassword(String password) {
         return (password.matches("\\w*\\d\\w*"));
     }

     @UseCase(id = 48)
     public String encryptPassword(String password) {
         return new StringBuilder(password).reverse().toString();
     }
 }
 

使用注解最主要的部分在于對注解的處理,那么就會涉及到注解處理器。

從原理上講,注解處理器就是通過反射機制獲取被檢查方法上的注解信息,然后根據注解元素的值進行特定的處理。

public static void main(String[] args) {
     List useCases =      new ArrayList();      
     Collections.addAll(useCases,       47,       48,       49,       50);      
     trackUseCases(useCases, PasswordUtils.class);      
 }      
       
       public static void trackUseCases(List useCases, Class cl) {      
           for (Method m : cl.getDeclaredMethods()) {      
         UseCase uc = m.getAnnotation(UseCase.class);      
               if (uc !=       null) {      
             System.out.println(      "Found Use Case:" + uc.id() +       " "      
                         + uc.description());      
             useCases.remove(      new Integer(uc.id()));      
         }      
     }      
           for (      int i : useCases) {      
         System.out.println(      "Warning: Missing use case-" + i);      
     }      
 }      
   
 

Found Use Case:47 Passwords must contain at least one numeric

Found Use Case:48 no description

Warning: Missing use case-49

Warning: Missing use case-50

上面的三段代碼結合起來是一個跟蹤項目中用例的簡單例子。

“Java注解的基本原理是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐边县| 扎鲁特旗| 当阳市| 舞钢市| 保定市| 北安市| 鄢陵县| 岳西县| 长丰县| 左权县| 高碑店市| 娱乐| 铜川市| 绩溪县| 湘西| 那曲县| 修武县| 广平县| 永善县| 广丰县| 宁夏| 洛浦县| 东安县| 北辰区| 垫江县| 任丘市| 三台县| 绵阳市| 泸西县| 洱源县| 罗城| 宁强县| 阳新县| 镇康县| 宜川县| 阜平县| 油尖旺区| 敖汉旗| 阜城县| 板桥市| 鹤壁市|