锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
c.鍥犱負property,xml鐨勯厤緗枃浠舵瘮杈冪箒鐞?nbsp;
2銆丄nnotation鐨勫畾涔夋柟寮?br />
a.Class,Interface,enum,Annotation鏄悓綰у埆鐨勭被鏍囪瘑絎?br />
b.public @interface AnnotationTest{} //@+interface = annotation鐨勫畾涔夊搱
public @interface AnnotationTest2{
String value(); //榛樿鏋勯犳柟娉?br />
}
public @interface AnnotationTest3{
String value1();
}
public @interface AnnotationTest4{
String[] value();
}
public @interface AnnotationTest5{
String value1();
String value2();
}
3銆丄nnotation鐨勪嬌鐢ㄦ柟寮?br />
a.@AnnotationTest 鏉ヤ嬌鐢ㄥ氨鍙互浜嗭紱鍙互鏀懼湪綾伙紝鏂規硶錛屽睘鎬т笂闈紱
b.@AnnotationTest2("test") == @AnnotationTest2(value="test");
c.@AnnotationTest3(value1="test3");
d.@AnnotationTest4({"test1","test2"}); == @AnnotationTest4(value=({"test1","test2"})
e.@AnnotationTest5(value1="hello",value2="world")
4銆乯dk5.0浠ュ悗鑷甫鐨凙nnotation璇﹁В
a.Override (閲嶅啓)
b.Deprecated (鎶涘純鐨勶紝宸茶繃鏃?/span>鐨?
c.SuppressWarnings錛堝帇鍒惰鍛婏紝灞忚斀璀﹀憡錛?br />
SuppressWarnings("unchecked"); //灞忚斀涓涓鍛?br />
SuppressWarnings({"unchecked","deprecation"})//灞忚斀[澶氫釜]璀﹀憡 娉ㄦ剰{key1,key2}鐨勪嬌鐢紝浠ユ暟緇勭殑褰㈠紡瀛樻斁
鏈夊摢浜涘父鐢ㄧ殑璀﹀憡綾誨瀷鍛紵
錛嶃媢nchecked,deprecration,鍙嚜瀹氫箟
5銆丄nnotation鐨勯珮綰х壒鎬?nbsp;
涓銆佹庝箞鏉ュ鐞咥nnotation
a.鍛婄煡緙栬瘧紼嬪簭濡備綍澶勭悊@Retention(閲嶈)
java.lang.annotation.Retention鍨嬫佸彲浠ュ湪鎮ㄥ畾鑷畾涔堿nnotation鍨嬫佹椂錛屾寚紺虹紪璇戠▼搴忓簲璇ュ浣曞寰呬綘鐨勮嚜瀹氫箟鐨凙nnotation鍨嬫?->棰勮涓婄紪璇戠▼搴忎細灝咥nnotation淇℃伅鐣欏湪[.class榛樿]妗f涓?/span>錛屼絾涓嶄細琚玧ava铏氱ぜ鏈鴻鍙栵紝鑰屼粎鐢ㄤ簬緙栬瘧紼嬪簭鎴栧伐鍏風▼搴忚繍琛屾椂鐨勬彁紺轟俊鎭?/span>錛堢洰鐨勶級
1)鏈韓灝辨槸涓涓?娉ㄩ噴綾誨瀷 Retention
2)鐢ㄤ竴涓? RetentionPolicy value();灞炴?瑙乯dk api
3)RetentionPolicy鏄粈涔堝憿錛熷畠鏄竴涓灇涓劇被鍨嬬殑娉ㄩ噴淇濈暀絳栫暐錛?a href="../../../java/lang/annotation/RetentionPolicy.html#CLASS">CLASS榛樿錛堢紪璇戝櫒灝嗘妸娉ㄩ噴璁板綍鍦ㄧ被鏂囦歡涓紝浣嗗湪榪愯鏃?VM 涓嶉渶瑕佷繚鐣欐敞閲婏級銆?a href="../../../java/lang/annotation/RetentionPolicy.html#RUNTIME">RUNTIME錛堢紪璇戝櫒灝嗘妸娉ㄩ噴璁板綍鍦ㄧ被鏂囦歡涓紝鍦ㄨ繍琛屾椂 VM 灝嗕繚鐣欐敞閲婏紝鍥犳鍙互鍙嶅皠鎬у湴璇誨彇錛夈?a href="../../../java/lang/annotation/RetentionPolicy.html#SOURCE">SOURCE錛堢紪璇戝櫒瑕佷涪寮冪殑娉ㄩ噴錛?nbsp;
4).渚嬪瓙
@Target(value={TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
@Retention(value=SOURCE)銆銆 == @Retention(RetentionPolicy.SOURCE) //鎻愪緵浜嗕竴涓瓥鐣ョ被
//灝卞彲浠ョ湅鍑烘潵錛屼粬涓昏灝辨槸鍘嬪埗璀﹀憡錛屾墍浠ユ病鏈夊繀瑕佷繚瀛樺埌class鏂囦歡閲岄潰鍘?br />
public @interface SuppressWarnings{銆傘傘倉
5).RUNTIME鏃墮氳繃鍙嶅皠鏉ュ緱鍒癆nnotation鐩稿叧鐨勪俊鎭?br />
6).AnnotatedElement 灝辨槸鎻愪緵鍙嶅皠澶勭悊annotation鐨勬帴鍙?Class,constructor,Field,Method,Package閮藉疄鐜頒簡榪欎釜鎺ュ彛錛岀劧鍚庢垜浠湪鍙嶅皠鐨勬椂鍊欏彲浠ュ厛寰楀埌Class,Constructor,Method絳夊璞″啀閫氳繃閲岄潰緇ф壙鐨?
b.闄愬畾Annotation鐨勪嬌鐢ㄥ璞?@Target錛堥噸瑕侊級
1).娉ㄩ噴綾誨瀷 Target,鏂規硶錛欵lementType[] value
2).鏋氫婦 ElementType:PACKAGE[鍖呭0鏄嶿,TYPE[綾匯佹帴鍙o紙鍖呮嫭娉ㄩ噴綾誨瀷錛夋垨鏋氫婦澹版槑],ANNOTATION_TYPE[娉ㄩ噴綾誨瀷==annotation綾婚噷闈㈠彲浠ュ畾涔塢,CONSTRUCTOR[鏋勯犳柟娉昡,METHOD[鏂規硶],FIELD[瀛楁澹版槑錛堝寘鎷灇涓懼父閲忥級] ,LOCAL_VARIABLE[灞閮ㄥ彉閲忓0鏄嶿 ,PARAMETER[鍙傛暟澹版槑]
3).瀹炰緥
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationTest6{
String value();
}
c.瀛愮被鏄惁緇ф壙鐖剁被鐨凙nnotation-Inherited 1).娉ㄩ噴綾誨瀷 Inherited 澹版槑鐨凙nnotation錛?/span>
@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)
public @interface Inherited
2).浣跨敤錛氬鏋滄垜浠湪鏂板緩Annotation瀵硅薄浜嬶紝濡傛灉澹版槑浜?div style="display: inline-block; ">
@Inherited
public @interface AnnotationTest6{String value();}
@AnnotationTest6("haha")
public class Parent{}
public class Child extends Parent{}
鐒跺悗閫氳繃鍙嶅皠鍘繪煡Child鐨勬墍鏈堿nnotation
d.鍒╃敤鍙嶅皠寰楀埌Annotation淇℃伅[@Retention(value=RUNTIME)]
1)鐢ㄤ笂闈㈢殑瀹炰緥錛?nbsp; AnnotationTest5
2)鐪熸瑙f瀽浠g爜錛?nbsp;
public Class MyTest{
@AnnotationTest5(value1="hello",value2="world")
public void output(){
System.out.println("test annotation");
}
}
public class MyReflection{
public static void main(String args[]){
MyTest t = new MyTest();
Class<MyTest> c = MyTest.class;
Class<AnnotationTest5> a = AnnotationTest5.class;
Method m = c.getMethod("output",new Class[]{});
if(m.isAnnotationPresent(a)){
m.invoke(t,new Object[]{});
//Annotation a1 = m.getAnnotation(a);
MyAnnotationTest5 t5 = m.getAnnotation(a);
System.out.println(t5.value1);
System.out.println(t5.value2);
}
Annotation[] ans = m.getAnnotations();
System.out.println(an.annotationType().getName()); //浣嗚繖灝辮鐪婣nnotation閫夋嫨鐨勯偅縐嶇敓鎴愮瓥鐣?SOURCE,CLASS,RUNTIME[SuppressWarnings灝變笉浼氭樉紺哄嚭鏉
}
}
6銆佸簲鐢?br /> a.javadoc
1)娉ㄩ噴綾誨瀷 Documented
2)瀹炰緥:涓鑸垜浠駭鐢焜avadoc鐨勬椂鍊欙紝娌℃湁鎶婃垜浠嚜瀹氫箟鐨刟nnotation鏄劇ず鏄劇ず鍑烘潵錛屾垜浠鎬庝箞鎶婃垜浠啓鐨刟nnotation淇℃伅涔熸樉紺哄湪javadoc閲岄潰鍛?
@Documented //榪欎竴鍙ュ氨鏄湪鐢熸垚javadoc鐨勬椂鍊欙紝濡傛灉閬囧埌涓嬮潰瀹氫箟鐨刟nnotation灝辮鏄劇ず鍑烘潵
public @interface DocumentedAnnotation{
String value() default "test";
}
public class DocumentedTest{
/*
* 嫻嬭瘯鐢熸垚javadoc
*/
@DocumentedAnnotation(value="welcome")
public void testJavadoc(){
System.out.println("鍝堝搱");
}
}
鐐瑰嚮myeclipse閲岄潰鐨刾roject-->generate javadoc->璁劇疆 灝卞彲浠ョ敓鎴恓avadoc浜?/div>
]]>
]]>
1銆傛瘮濡傚浜轟竴涓被閲岄潰鏈夊緢澶氱殑闈欐佹柟娉曪紝鑰屽湪鍙︿竴涓被閲岄潰浣跨敤鐨勯鐜囦篃姣旇緝鐨勯珮錛屽ComUtil.add(...),ComUtil.update(...)絳夌瓑錛岃繖鏍鋒瘡嬈¢兘瑕佸啓ComUnitl.鏂規硶鍚嶏紝鎵浠ュ彲浠ョ洿鎺ヤ嬌鐢ㄦ柟娉曞悕鍚楋紵絳旀鏄偗瀹氱殑
2銆備嬌鐢ㄨ娉?br /> import static com.ComUtil.add;
import static com.ComUtil.update;
3銆備釜浜烘劅瑙夋病浠涔堢敤
浜屻佷笉瀹氬弬鏁?br /> public static int sum(int ... nums){
int sum= 0;
for(int i=0;i<nums.length;i++){
temp+=nums[i];
}
return sum;
}
a) 浣滅敤涓庡尯鍒?/span>
i. jar: 閫氬父鏄紑鍙戞椂瑕佸紩鐢ㄩ氱敤(JAVA)綾伙紝鎵撴垚鍖呬究浜庡瓨鏀劇鐞?/span>
ii. war: 鏄仛濂戒竴涓?/span>(web)搴旂敤鍚庯紝閫氬父鏄綉绔欙紝鎵撴垚鍖呴儴緗插埌瀹瑰櫒涓?/span>
iii. ear: 浼佷笟綰у簲鐢紝瀹為檯涓?/span>EAR鍖呬腑鍖呭惈WAR鍖呭拰鍑犱釜浼佷笟綰ч」鐩殑閰嶇疆鏂囦歡鑰屽凡錛屼竴鑸湇鍔″櫒閫夋嫨WebSphere絳夛紝閮戒細浣跨敤EAR鍖呫傞氬父鏄?/span>EJB鎵撴垚ear鍖呫?/span>
b) 鎵撳寘鏂瑰紡
i. 鎵鏈夌殑鍖呴兘鏄敤jar鎵撶殑錛屽彧涓嶈繃鐩爣鏂囦歡鐨勬墿灞曞悕涓嶄竴鏍?/span>
ii. 涔熷彲浠ョ敤Ant鏉ュ畨鎴愭瀯寤?/span>
c) JET緙栬瘧鎴?/span>EXE
i. JET 鏄鐢ㄩ挶涔扮殑錛岃屼笖鎹 JET 涔熶笉鏄兘鎶婃墍鏈夌殑 Java 紼嬪簭閮界紪璇戞垚鎵ц鏂囦歡錛屾ц兘涔熻鎵撲簺鎶樻墸銆傛墍浠ワ紝浣跨敤鍒朵綔鍙墽琛?/span> JAR 鏂囦歡鍖呯殑鏂規硶灝辨槸鏈浣抽夋嫨浜嗭紝浣曞喌瀹冭繕鑳戒繚鎸?/span> Java 鐨勮法騫沖彴鐗規с?/span>
a) Tomcat5,6,7
b) Bea Weblogic8,9,10
c) IBM Websphere
d) JBoss
e) Apusic Application Server
f) Sun Application Server
g) Oracle 鐨?/span> Oracle9i/AS