国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

Java中的Annotation解析

2019-11-18 12:33:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    在創(chuàng)建EJB組件時(shí),必需提供一些定義,使得EJB組件使用一些服務(wù)例如:安全服務(wù),持久化服務(wù),事務(wù)服務(wù)。EJB容器可以提供這些服務(wù),這樣EJB只要實(shí)現(xiàn)業(yè)務(wù)邏輯就可以了。但是說(shuō)到底EJB容器使用EJB組件的元數(shù)據(jù)來(lái)提供這些服務(wù),在以前EJB的元數(shù)據(jù)是以xml配置文件形式出現(xiàn)的,這些配置文件與EJB源文件是分開的。

     EJB的部署人員無(wú)法了解EJB本身的信息,假如EJB組件的創(chuàng)建者用注釋(Annotation)的方法將這些配置服務(wù)的信息和代碼放在一起,這樣EJB的部署者就可以了解EJB的信息,EJB的home接口可以使用Annotation自動(dòng)生成,當(dāng)然到目前為止更好的是在簡(jiǎn)單的java Object上使用Annotations。

一 什么是Annotation

    在已經(jīng)發(fā)布的JDK1.5(tiger)中增加新的特色叫 Annotation。Annotation提供一種機(jī)制,將程序的元素如:類,方法,屬性,參數(shù),本地變量,包和元數(shù)據(jù)聯(lián)系起來(lái)。這樣編譯器可以將元數(shù)據(jù)存儲(chǔ)在Class文件中。這樣虛擬機(jī)和其它對(duì)象可以根據(jù)這些元數(shù)據(jù)來(lái)決定如何使用這些程序元素或改變它們的行為。

二 定義一個(gè)簡(jiǎn)單的Annotation并使用它

1.定義Annotation

    定義一個(gè)Annotation是什么簡(jiǎn)單的,它采取的是類似于Interface的定義方式: “@+annotation類型名稱+(..逗號(hào)分割的name-value對(duì)...)”

//Example 1

package sz.starbex.bill.annotation;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

import java.lang.annotation.ElementType;

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface SimpleAnnotation {

String value();

}

    @Retention這個(gè)meta-annotation表示我們創(chuàng)建的SimpleAnnotation這個(gè)Annotation將會(huì)存儲(chǔ)在Class文件中,并在java

    VM運(yùn)行時(shí)加載它。@Target這個(gè)meta-annotation表示我們創(chuàng)建的SimplwAnnotation將會(huì)為描述方法,而@interface SimpleAnnotation是我們自定義的Annotation,它有一個(gè)成員叫value,返回值是String。

2.使用Annotation

//Example 2

package sz.starbex.bill.annotation;

import sz.starbex.bill.annotation.SimpleAnnotation;

public class UsingSimpleAnnotation {

@SimpleAnnotation(value="Pass:This method will Pass")//注重name=value的用法

public void pass(){

if(10>5) System.out.
}

@SimpleAnnotation("Fail:This method will Fail")//注重name=value的用法

public void fail(){

if(10<5) System.out.println("測(cè)試失敗");

}

}

    一個(gè)Annotation用于程序元素(在本例中是method),在method方法之前用(@Annotation名稱(name=value,name=value.....)。在本例中是@SimpleAnnotation(value="Pass:This method will Pass")。每個(gè)annotation具有一個(gè)名字和成員個(gè)數(shù)>=0,當(dāng)只有一個(gè)單一的成員時(shí),這個(gè)成員就是value。我們也可以這樣寫 @SimpleAnnotation("Fail:This method will Fail")。至此@SimpleAnnotation將Pass和Fail聯(lián)系起來(lái)了。

3.在運(yùn)行時(shí)訪問(wèn)Annotation

    一旦Annotation與程序元素聯(lián)系起來(lái),我們可以通過(guò)反射訪問(wèn)它們并可以取得它們的值。我們使用一個(gè)新的interface:java.lang.reflect.AnnotatedElement。java.lang.reflect.AnnotatedElement接口中的方法有:

  • a. boolean isAnnotationPresent(Class annotationType)

    假如指定類型的注釋存在于此元素上,則返回 true,否則返回 false。
  • b. T getAnnotation(Class annotationType)

    假如存在該元素的指定類型的注釋,則返回這些注釋,否則返回 null。
  • c. Annotation[] getAnnotations()

    返回此元素上存在的所有注釋。
  • d. Annotation[] getDeclaredAnnotations()

    返回直接存在于此元素上的所有注釋。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 资溪县| 天长市| 远安县| 丰宁| 苍山县| 化州市| 乌海市| 噶尔县| 朔州市| 松原市| 宝丰县| 德兴市| 黔西| 聊城市| 扬州市| 双流县| 揭西县| 巴南区| 清流县| 石门县| 新巴尔虎右旗| 普定县| 讷河市| 建平县| 和龙市| 内江市| 靖远县| 锡林浩特市| 上蔡县| 个旧市| 武鸣县| 铁岭县| 陇南市| 成都市| 鸡东县| 仁化县| 崇礼县| 吴桥县| 新竹县| 景东| 开封市|