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

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

Java中的Annotation解析之一(1)

2019-11-18 11:16:33
字體:
供稿:網(wǎng)友

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

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

一 什么是Annotation

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

二 定義一個簡單的Annotation并使用它

1.定義Annotation

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

//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這個meta-annotation表示我們創(chuàng)建的SimpleAnnotation這個Annotation將會存儲在Class文件中,并在java

VM運(yùn)行時加載它。@Target這個meta-annotation表示我們創(chuàng)建的SimplwAnnotation將會為描述方法,而@interface SimpleAnnotation是我們自定義的Annotation,它有一個成員叫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("測試失敗");

}

}

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

3.在運(yùn)行時訪問Annotation

一旦Annotation與程序元素聯(lián)系起來,我們可以通過反射訪問它們并可以取得它們的值。我們使用一個新的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ā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 渝中区| 新兴县| 吴忠市| 梅州市| 安顺市| 洛阳市| 米泉市| 徐汇区| 鄂温| 涿州市| 利津县| 南木林县| 安图县| 土默特右旗| 安塞县| 噶尔县| 什邡市| 淮安市| 会昌县| 社旗县| 柯坪县| 衢州市| 纳雍县| 南川市| 逊克县| 大埔县| 宜州市| 美姑县| 乃东县| 同德县| 秀山| 漳平市| 商河县| 南丰县| 印江| 开鲁县| 镇江市| 大石桥市| 宁德市| 漳浦县| 日照市|