国产精品毛片一区二区,欧美熟妇brazzers,丰满女邻居的嫩苞张开视频,天天爽夜夜爽夜夜爽

南京北大青鳥

全國咨詢電話:15195455103

三分鐘了解北大青鳥
當(dāng)前位置:南京北大青鳥 > 學(xué)習(xí)園地 > 編程技巧

Java注解

來源:南京北大青鳥張府園校區(qū)? ? ? 作者:IT教育 ? ??

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

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

注解的語法比較簡單,除了@符號的使用之外,它基本與Java固有語法一致。Java SE5內(nèi)置了三種標(biāo)準(zhǔn)注解:

@Override,表示當(dāng)前的方法定義將覆蓋超類中的方法。

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

@SuppressWarnings,關(guān)閉不當(dāng)編譯器警告信息。

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

@Target

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

CONSTRUCTOR:構(gòu)造器的聲明

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

LOCAL_VARIABLE:局部變量聲明

METHOD:方法聲明

PACKAGE:包聲明

PARAMETER:參數(shù)聲明

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

@Retention

表示需要在什么級別保存該注解信息??蛇x的RetentionPolicy參數(shù)包括:

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,它們的含義在上面的表格中已近給出。

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

注解的可用的類型包括以下幾種:所有基本類型、String、Class、enum、Annotation、以上類型的數(shù)組形式。元素不能有不確定的值,即要么有默認(rèn)值,要么在使用注解的時候提供元素的值。而且元素不能使用null作為默認(rèn)值。注解在只有一個元素且該元素的名稱是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 }

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

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

1 public static void main(String[] args) {
2     List<Integer> useCases = new ArrayList<Integer>();
3     Collections.addAll(useCases, 47, 48, 49, 50);
4     trackUseCases(useCases, PasswordUtils.class);
5 }
6
7 public static void trackUseCases(List<Integer> useCases, Class<?> cl) {
8     for (Method m : cl.getDeclaredMethods()) {
9         UseCase uc = m.getAnnotation(UseCase.class);
10         if (uc != null) {
11             System.out.println("Found Use Case:" + uc.id() + " "
12                         + uc.description());
13             useCases.remove(new Integer(uc.id()));
14         }
15     }
16     for (int i : useCases) {
17         System.out.println("Warning: Missing use case-" + i);
18     }
19 }

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


分享到:

相關(guān)閱讀:

近期文章

搶試聽名額

名額僅剩66名

教育改變生活

WE CHANGE LIVES