麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java @注解

2019-11-15 01:15:43
字體:
供稿:網(wǎng)友
java @注解1.注解簡介

在開發(fā)Java程序,尤其是Java EE應(yīng)用的時(shí)候,總是免不了與各種配置文件打交道。以Java EE中典 型的S(PRing)S(truts)H(ibernate)架構(gòu)來說,Spring、Struts和Hibernate這三個(gè)框架都有自己的xml格式的配置文件。這些配置文件需要與Java源代碼保存同步,否則的話就可能出現(xiàn)錯(cuò)誤。而且這些錯(cuò)誤有可能到了運(yùn)行時(shí)刻才被發(fā)現(xiàn)。把同一份信息保存在兩個(gè)地方,總是個(gè)壞的主意。理想的情況是在一個(gè)地方維護(hù)這些信息就好了。其它部分所需的信息則通過自動(dòng)的方式來生成。JDK5中引入了源代碼中的注解(annotation)這一機(jī)制。注解使得Java源代碼中不但可以包含功能性的實(shí)現(xiàn)代碼,還可以添加元數(shù)據(jù)。注解的功能類似于代碼中的注釋,所不同的是注解不是提供代碼功能的說明,而是實(shí)現(xiàn)程序功能的重要組成部分。Java注解已經(jīng)在很多框架中得到了廣泛的使用,用來簡化程序中的配置。

a.生成文檔。這是最常見的,也是java 最早提供的注解。常用的有@see @param @return 等;b.跟蹤代碼依賴性,實(shí)現(xiàn)替代配置文件功能。比較常見的是spring 2.5 開始的基于注解配置。作用就是減少配置。現(xiàn)在的框架基本都使用了這種配置來減少配置文件的數(shù)量;c. 編譯時(shí)進(jìn)行格式檢查。如@Override 放在方法前,如果你這個(gè)方法并不是覆蓋了超類方法,則編譯時(shí)就能檢查出。

2.使用注解

注解的語法比較簡單,除了@符號的使用之外,它基本與Java固有語法一致。Java SE5內(nèi)置了三種標(biāo)準(zhǔn)注解: @Override,表示當(dāng)前的方法定義將覆蓋超類中的方法。 @Deprecated,使用了注解為它的元素編譯器將發(fā)出警告,因?yàn)樽⒔釦Deprecated是不贊成使用的代碼,被棄用的代碼。@SuppressWarnings,關(guān)閉不當(dāng)編譯器警告信息。上面這三個(gè)注解多少我們都會(huì)在寫代碼的時(shí)候遇到。Java還提供了4中注解,專門負(fù)責(zé)新注解的創(chuàng)建。

@Target

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

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

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

LOCAL_VARIABLE:局部變量聲明

METHOD:方法聲明

PACKAGE:包聲明

PARAMETER:參數(shù)聲明

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

@Retention

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

SOURCE:注解將被編譯器丟棄

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

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

@Document

將注解包含在Javadoc中

@Inherited

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

在一般的Java開發(fā)中,最常接觸到的可能就是@Override和@SupressWarnings這兩個(gè)注解了。使用@Override的時(shí)候只需要一個(gè)簡單的聲明即可。這種稱為標(biāo)記注解(markerannotation ),它的出現(xiàn)就代表了某種配置語義。而其它的注解是可以有自己的配置參數(shù)的。配置參數(shù)以名值對的方式出現(xiàn)。使用 @SupressWarnings的時(shí)候需要類似@SupressWarnings({"uncheck", "unused"})這樣的語法。在括號里面的是該注解可供配置的值。由于這個(gè)注解只有一個(gè)配置參數(shù),該參數(shù)的名稱默認(rèn)為value,并且可以省略。而花括號則表示是數(shù)組類型。在JPA中的@Table注解使用類似@Table(name = "Customer", schema = "APP")這樣的語法。從這里可以看到名值對的用法。在使用注解時(shí)候的配置參數(shù)的值必須是編譯時(shí)刻的常量。從某種角度來說,可以把注解看成是一個(gè)XML元素,該元素可以有不同的預(yù)定義的屬性。而屬性的值是可以在聲明該元素的時(shí)候自行指定的。在代碼中使用注解,就相當(dāng)于把一部分元數(shù)據(jù)從XML文件移到了代碼本身之中,在一個(gè)地方管理和維護(hù)。

3.開發(fā)注解

在一般的開發(fā)中,只需要通過閱讀相關(guān)的API文檔來了解每個(gè)注解的配置參數(shù)的含義,并在代碼中正確使用即可。在有些情況下,可能會(huì)需要開發(fā)自己的注解。這在庫的開發(fā)中比較常見。注解的定義有點(diǎn)類似接口。下面的代碼給出了一個(gè)簡單的描述代碼分工安排的注解。通過該注解可以在源代碼中記錄每個(gè)類或接口的分工和進(jìn)度情況。

1 @Retention(RetentionPolicy.RUNTIME)2 @Target(ElementType.TYPE)3 public @interface Assignment {4 String assignee();5 int effort();6 double finished() default 0;7 } 

@interface用來聲明一個(gè)注解,其中的每一個(gè)方法實(shí)際上是聲明了一個(gè)配置參數(shù)。方法的名稱就是參數(shù)的名稱,返回值類型就是參數(shù)的類型。可以通過default來聲明參數(shù)的默認(rèn)值。在這里可以看到@Retention和@Target這樣的元注解,用來聲明注解本身的行為。@Retention用來聲明注解的保留策略,有CLASS、RUNTIME和SOURCE這三種,分別表示注解保存在類文件、JVM運(yùn)行時(shí)刻和源代碼中。只有當(dāng)聲明為RUNTIME的時(shí)候,才能夠在運(yùn)行時(shí)刻通過反射API來獲取到注解的信息。@Target用來聲明注解可以被添加在哪些類型的元素上,如類型、方法和域等。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精品欧美电影 | 欧美黄色一级片在线观看 | 欧美精品a∨在线观看不卡 午夜精品影院 | 国产69久久久 | 久久精品探花 | 狠狠干最新网址 | 欧美性受xxx黑人xyx性爽 | 91一级毛片 | www国产免费 | 中文字幕欧美一区二区三区 | 黄污免费网站 | 黄视频网址 | 一级黄色免费观看 | freexxxhd喷水| 九九精品在线播放 | 91色成人| 国产精品久久久久久久久久电影 | 88xx成人永久免费观看 | 中文字幕网在线 | 欧美日韩在线中文 | 久久国产精品久久久久 | 成人网在线观看 | 成人午夜网址 | 成年免费大片黄在线观看岛国 | 成人毛片在线免费看 | 手机免费看一级片 | 中国av免费在线观看 | 九九午夜 | 国产毛片毛片毛片 | 黄色片免费看看 | 久久久精品福利 | av免费不卡国产观看 | av成人免费在线观看 | 久在线播放 | 在线成人一区二区 | 久久精品亚洲国产奇米99 | 国产午夜电影在线观看 | 亚洲最大的成人网 | 免费a级黄色片 | 久草导航 | 久久不射电影网 |