日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中注解的使用与实例(一)

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中注解的使用与实例(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

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

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

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

?

@Target

表示該注解可以用于什么地方,可能的ElementType參數有:

CONSTRUCTOR:構造器的聲明

FIELD:域聲明(包括enum實例)

LOCAL_VARIABLE:局部變量聲明

METHOD:方法聲明

PACKAGE:包聲明

PARAMETER:參數聲明

TYPE:類、接口(包括注解類型)或enum聲明

@Retention

表示需要在什么級別保存該注解信息。可選的RetentionPolicy參數包括:

SOURCE:注解將被編譯器丟棄

CLASS:注解在class文件中可用,但會被VM丟棄

RUNTIME:VM將在運行期間保留注解,因此可以通過反射機制讀取注解的信息。

@Document

將注解包含在Javadoc中

@Inherited

允許子類繼承父類中的注解

?? ?

  定義一個注解的方式: ??

1 @Target(ElementType.METHOD) 2 @Retention(RetentionPolicy.RUNTIME) 3 public @interface Test { 4 5 }

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

? ? ?在注解中一般會有一些元素以表示某些值。注解的元素看起來就像接口的方法,唯一的區別在于可以為其制定默認值。沒有元素的注解稱為標記注解,上面的@Test就是一個標記注解。?

? ? ?注解的可用的類型包括以下幾種:所有基本類型、String、Class、enum、Annotation、以上類型的數組形式。元素不能有不確定的值,即要么有默認值,要么在使用注解的時候提供元素的值。而且元素不能使用null作為默認值。注解在只有一個元素且該元素的名稱是value的情況下,在使用注解的時候可以省略“value=”,直接寫需要的值即可。?

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

1 @Target(ElementType.METHOD) 2 @Retention(RetentionPolicy.RUNTIME) 3 public @interface UseCase { 4 public String id(); 5 public String description() default "no description"; 6 }

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

1 public class PasswordUtils {2 @UseCase(id = 47, description = "Passwords must contain at least one numeric")3 public boolean validatePassword(String password) {4 return (password.matches("\\w*\\d\\w*"));5 }6 7 @UseCase(id = 48)8 public String encryptPassword(String password) {9 return new StringBuilder(password).reverse().toString(); 10 } 11 }

?

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

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

public static void main(String[] args) {List<Integer> useCases = new ArrayList<Integer>();Collections.addAll(useCases, 47, 48, 49, 50);trackUseCases(useCases, PasswordUtils.class);}public static void trackUseCases(List<Integer> 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

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

? ? ?寫到這里博主想到結合枚舉、注解、反射、攔截器等內容,是否可以寫一套用戶權限驗證呢?

? ? ?將用戶權限用枚舉的方式給出,注解元素表明某個方法必須擁有某些權限才能調用,攔截器攔截請求方法,用戶是否有權限對該方法進行調用,根據用戶不同的權限進行不同的處理。歡迎討論!

?

轉載于:https://www.cnblogs.com/yaowen/p/4832602.html

總結

以上是生活随笔為你收集整理的java中注解的使用与实例(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。