鍏充簬HTTP璇鋒眰瓚呮椂瀛楁瀹氫箟
涓€銆佹蹇?/strong>
銆€銆€ Annontation鏄?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Java5寮€濮嬪紩鍏ョ殑鏂扮壒寰併€備腑鏂囧悕縐頒竴鑸彨娉ㄨВ銆傚畠鎻愪緵浜嗕竴縐嶅畨鍏ㄧ殑綾諱技娉ㄩ噴鐨勬満鍒訛紝鐢ㄦ潵灝嗕換浣曠殑淇℃伅鎴栧厓鏁版嵁錛?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">metadata錛変笌紼嬪簭鍏冪礌錛堢被銆佹柟娉曘€佹垚鍛樺彉閲忕瓑錛夎繘琛屽叧鑱斻€?/p>
銆€銆€鏇撮€氫織鐨勬剰鎬濇槸涓虹▼搴忕殑鍏冪礌錛堢被銆佹柟娉曘€佹垚鍛樺彉閲忥級鍔犱笂鏇寸洿瑙傛洿鏄庝簡鐨勮鏄庯紝榪欎簺璇存槑淇℃伅鏄笌紼嬪簭鐨勪笟鍔¢€昏緫鏃犲叧錛屽茍涓旀槸渚涙寚瀹氱殑宸ュ叿鎴栨鏋朵嬌鐢ㄧ殑銆?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">
Annontation鍍忎竴縐嶄慨楗扮涓€鏍鳳紝搴旂敤浜庡寘銆佺被鍨嬨€佹瀯閫犳柟娉曘€佹柟娉曘€佹垚鍛樺彉閲忋€佸弬鏁板強鏈湴鍙橀噺鐨勫0鏄庤鍙ヤ腑銆?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">
浜?/span>銆佸師鐞?/strong>
銆€銆€Annotation鍏跺疄鏄竴縐嶆帴鍙c€傞€氳繃Java鐨勫弽灝勬満鍒剁浉鍏崇殑API鏉ヨ闂?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation淇℃伅銆傜浉鍏崇被錛堟鏋舵垨宸ュ叿涓殑綾伙級鏍規嵁榪欎簺淇℃伅鏉ュ喅瀹氬浣曚嬌鐢ㄨ紼嬪簭鍏冪礌鎴栨敼鍙樺畠浠殑琛屼負銆?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">
銆€銆€annotation鏄笉浼氬獎鍝嶇▼搴忎唬鐮佺殑鎵ц錛屾棤璁?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation鎬庝箞鍙樺寲錛屼唬鐮侀兘濮嬬粓濡備竴鍦版墽琛屻€?/p>
銆€銆€Java璇█瑙i噴鍣ㄥ湪宸ヤ綔鏃朵細蹇界暐榪欎簺annotation錛屽洜姝ゅ湪JVM 涓繖浜?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation鏄?#8220;涓嶈搗浣滅敤”鐨勶紝鍙兘閫氳繃閰嶅鐨勫伐鍏鋒墠鑳藉榪欎簺annontaion綾誨瀷鐨勪俊鎭繘琛岃闂拰澶勭悊銆?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">
銆€銆€Annotation涓?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">interface鐨勫紓鍚?/span>錛?/p>
銆€銆€銆€銆€1錛夈€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation綾誨瀷浣跨敤鍏抽敭瀛?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@interface鑰屼笉鏄?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">interface銆?/p>
銆€銆€榪欎釜鍏抽敭瀛楀0鏄庨殣鍚簡涓€涓俊鎭細瀹冩槸緇ф壙浜?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">java.lang.annotation.Annotation鎺ュ彛錛屽茍闈炲0鏄庝簡涓€涓?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">interface
銆€銆€銆€銆€2錛夈€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation綾誨瀷銆佹柟娉曞畾涔夋槸鐙壒鐨勩€佸彈闄愬埗鐨勩€?/p>
銆€銆€Annotation 綾誨瀷鐨勬柟娉曞繀欏誨0鏄庝負鏃犲弬鏁般€佹棤寮傚父鎶涘嚭鐨勩€傝繖浜涙柟娉曞畾涔変簡annotation鐨勬垚鍛橈細鏂規硶鍚嶆垚涓轟簡鎴愬憳鍚嶏紝鑰屾柟娉曡繑鍥炲€兼垚涓轟簡鎴愬憳鐨勭被鍨嬨€傝€屾柟娉曡繑鍥炲€肩被鍨嬪繀欏諱負primitive綾誨瀷銆?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Class綾誨瀷銆佹灇涓劇被鍨嬨€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation綾誨瀷鎴栬€呯敱鍓嶉潰綾誨瀷涔嬩竴浣滀負鍏冪礌鐨勪竴緇存暟緇勩€傛柟娉曠殑鍚庨潰鍙互浣跨敤 default鍜屼竴涓粯璁ゆ暟鍊兼潵澹版槑鎴愬憳鐨勯粯璁ゅ€鹼紝null涓嶈兘浣滀負鎴愬憳榛樿鍊鹼紝榪欎笌鎴戜滑鍦ㄩ潪annotation綾誨瀷涓畾涔夋柟娉曟湁寰堝ぇ涓嶅悓銆?/p>
銆€銆€Annotation綾誨瀷鍜屽畠鐨勬柟娉曚笉鑳戒嬌鐢?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation綾誨瀷鐨勫弬鏁般€佹垚鍛樹笉鑳芥槸generic銆傚彧鏈夎繑鍥炲€肩被鍨嬫槸Class鐨勬柟娉曞彲浠ュ湪annotation綾誨瀷涓嬌鐢?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">generic錛屽洜涓烘鏂規硶鑳藉鐢ㄧ被杞崲灝嗗悇縐嶇被鍨嬭漿鎹負Class銆?/p>
銆€銆€銆€銆€3錛夈€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation綾誨瀷鍙堜笌鎺ュ彛鏈夌潃榪戜技涔嬪銆?/p>
銆€銆€瀹冧滑鍙互瀹氫箟甯擱噺銆侀潤鎬佹垚鍛樼被鍨嬶紙姣斿鏋氫婦綾誨瀷瀹氫箟錛夈€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation綾誨瀷涔熷彲浠ュ鎺ュ彛涓€鑸瀹炵幇鎴栬€呯戶鎵褲€?/p>
涓?/span>銆佸簲鐢ㄥ満鍚?/span>
銆€銆€annotation涓€鑸綔涓轟竴縐嶈緟鍔╅€斿緞錛屽簲鐢ㄥ湪杞歡妗嗘灦鎴栧伐鍏蜂腑錛屽湪榪欎簺宸ュ叿綾諱腑鏍規嵁涓嶅悓鐨?annontation娉ㄨВ淇℃伅閲囧彇涓嶅悓鐨勫鐞嗚繃紼嬫垨鏀瑰彉鐩稿簲紼嬪簭鍏冪礌錛堢被銆佹柟娉曞強鎴愬憳鍙橀噺絳夛級鐨勮涓恒€?/p>
銆€銆€渚嬪錛?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Junit銆?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Struts銆?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Spring絳夋祦琛屽伐鍏鋒鏋朵腑鍧囧箍娉涗嬌鐢ㄤ簡annontion銆備嬌浠g爜鐨勭伒媧繪€уぇ鎻愰珮銆?/p>
鍥?/span>銆佸父瑙佹爣鍑嗙殑Annotation
銆€銆€浠?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">java5鐗堟湰寮€濮嬶紝鑷甫浜嗕笁縐嶆爣鍑?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annontation綾誨瀷,
銆€銆€銆€銆€錛?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">1錛夈€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Override
銆€銆€java.lang.Override 鏄竴涓?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">marker annotation綾誨瀷錛屽畠琚敤浣滄爣娉ㄦ柟娉曘€傚畠璇存槑浜嗚鏍囨敞鐨勬柟娉曢噸杞戒簡鐖剁被鐨勬柟娉曪紝璧峰埌浜嗘柇璦€鐨勪綔鐢ㄣ€傚鏋滄垜浠嬌鐢ㄤ簡榪欑annotation鍦ㄤ竴涓病鏈夎鐩栫埗綾繪柟娉曠殑鏂規硶鏃訛紝java緙栬瘧鍣ㄥ皢浠ヤ竴涓紪璇戦敊璇潵璀︾ず銆?/p>
銆€銆€榪欎釜annotaton甯稿父鍦ㄦ垜浠瘯鍥捐鐩栫埗綾繪柟娉曡€岀‘鍙堝啓閿欎簡鏂規硶鍚嶆椂鍔犱竴涓繚闅滄€х殑鏍¢獙榪囩▼銆?/p>
銆€銆€銆€銆€錛?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">2錛夈€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Deprecated
銆€銆€Deprecated涔熸槸涓€縐?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">marker annotation銆傚綋涓€涓被鍨嬫垨鑰呯被鍨嬫垚鍛樹嬌鐢?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@Deprecated淇グ鐨勮瘽錛岀紪璇戝櫒灝嗕笉榧撳姳浣跨敤榪欎釜琚爣娉ㄧ殑紼嬪簭鍏冪礌銆傛墍浠ヤ嬌鐢ㄨ繖縐嶄慨楗板叿鏈変竴瀹氱殑 “寤剁畫鎬?#8221;錛氬鏋滄垜浠湪浠g爜涓€氳繃緇ф壙鎴栬€呰鐩栫殑鏂瑰紡浣跨敤浜嗚繖涓繃鏃剁殑綾誨瀷鎴栬€呮垚鍛橈紝铏界劧緇ф壙鎴栬€呰鐩栧悗鐨勭被鍨嬫垨鑰呮垚鍛樺茍涓嶆槸琚0鏄庝負 @Deprecated錛屼絾緙栬瘧鍣ㄤ粛鐒惰鎶ヨ銆?/p>
銆€銆€娉ㄦ剰錛?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@Deprecated榪欎釜annotation綾誨瀷鍜?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">javadoc涓殑 @deprecated榪欎釜tag鏄湁鍖哄埆鐨勶細鍓嶈€呮槸java緙栬瘧鍣ㄨ瘑鍒殑錛岃€屽悗鑰呮槸琚?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">javadoc宸ュ叿鎵€璇嗗埆鐢ㄦ潵鐢熸垚鏂囨。錛堝寘鍚▼搴忔垚鍛樹負浠€涔堝凡緇忚繃鏃躲€佸畠搴斿綋濡備綍琚姝㈡垨鑰呮浛浠g殑鎻忚堪錛夈€?/p>
銆€銆€銆€銆€錛?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">3錛夈€?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">SuppressWarnings
銆€銆€姝ゆ敞瑙h兘鍛婅瘔Java緙栬瘧鍣ㄥ叧闂綾匯€佹柟娉曞強鎴愬憳鍙橀噺鐨勮鍛娿€?/p>
銆€銆€鏈夋椂緙栬瘧鏃朵細鎻愬嚭涓€浜涜鍛婏紝瀵逛簬榪欎簺璀﹀憡鏈夌殑闅愯棌鐫€Bug錛屾湁鐨勬槸鏃犳硶閬垮厤鐨勶紝瀵逛簬鏌愪簺涓嶆兂鐪嬪埌鐨勮鍛婁俊鎭紝鍙互閫氳繃榪欎釜娉ㄨВ鏉ュ睆钄姐€?/p>
銆€銆€SuppressWarning涓嶆槸涓€涓?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">marker annotation銆傚畠鏈変竴涓被鍨嬩負String[]鐨勬垚鍛橈紝榪欎釜鎴愬憳鐨勫€間負琚姝㈢殑璀﹀憡鍚嶃€傚浜?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">javac緙栬瘧鍣ㄦ潵璁詫紝琚?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">-Xlint閫夐」鏈夋晥鐨勮鍛婂悕涔熷悓鏍峰@SuppressWarings鏈夋晥錛屽悓鏃剁紪璇戝櫒蹇界暐鎺夋棤娉曡瘑鍒殑璀﹀憡鍚嶃€?/p>
銆€銆€annotation璇硶鍏佽鍦?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation鍚嶅悗璺熸嫭鍙鳳紝鎷彿涓槸浣跨敤閫楀彿鍒嗗壊鐨?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">name=value瀵圭敤浜庝負annotation鐨勬垚鍛樿祴鍊鹼細
浠g爜錛?/p>
@SuppressWarnings(value={"unchecked","fallthrough"})
public void lintTrap() { /* sloppy method body omitted */ }
鍦ㄨ繖涓緥瀛愪腑SuppressWarnings annotation綾誨瀷鍙畾涔変簡涓€涓崟涓€鐨勬垚鍛橈紝鎵€浠ュ彧鏈変竴涓畝鍗曠殑value={...}浣滀負name=value瀵廣€傚張鐢變簬鎴愬憳鍊兼槸涓€涓暟緇勶紝鏁呬嬌鐢ㄥぇ鎷彿鏉ュ0鏄庢暟緇勫€箋€?/p>
娉ㄦ剰錛氭垜浠彲浠ュ湪涓嬮潰鐨勬儏鍐典腑緙╁啓annotation錛氬綋annotation鍙湁鍗曚竴鎴愬憳錛屽茍鎴愬憳鍛藉悕涓?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">"value="銆傝繖鏃跺彲浠ョ渷鍘?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">"value="銆傛瘮濡傚皢涓婇潰鐨?span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">SuppressWarnings annotation榪涜緙╁啓錛?/p>
浠g爜錛?/p>
@SuppressWarnings({"unchecked","fallthrough"})
濡傛灉SuppressWarnings鎵€澹版槑鐨勮紱佹璀﹀憡涓暟涓轟竴涓椂錛屽彲浠ョ渷鍘誨ぇ鎷彿錛?/p>
@SuppressWarnings("unchecked")
浜?/span>銆佽嚜瀹氫箟annontation紺轟緥
紺轟緥鍏辨秹鍙婂洓涓被錛?/p>
銆€銆€娓呭崟1:Author.java
package com.magc.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 瀹氫箟浣滆€呬俊鎭紝name鍜実roup
* @author magc
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface Author {
String name();
String group();
}
銆€銆€娓呭崟2:Description.java
/**
*
*/
package com.magc.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author magc
*
* 瀹氫箟鎻忚堪淇℃伅 value
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface Description {
String value();
}
娓呭崟3:Utility.java
package com.magc.annotation;
@Description(value = "榪欐槸涓€涓湁鐢ㄧ殑宸ュ叿綾?/span>")
public class Utility {
@Author(name = "haoran_202",group="com.magc")
public String work()
{
return "work over!";
}
}
娉細榪欐槸涓櫘閫氱殑Java綾伙紝榪愯浜咢Description鍜孈Author娉ㄨВ銆?/p>
娓呭崟3:AnalysisAnnotation.java
package com.magc.annotation;
import java.lang.reflect.Method;
public class AnalysisAnnotation {
/**
* 鍦ㄨ繍琛屾椂鍒嗘瀽澶勭悊annotation綾誨瀷鐨勪俊鎭?br /> *
*
*/
public static void main(String[] args) {
try {
//閫氳繃榪愯鏃跺弽灝凙PI鑾峰緱annotation淇℃伅
Class rt_class = Class.forName("com.magc.annotation.Utility");
Method[] methods = rt_class.getMethods();
boolean flag = rt_class.isAnnotationPresent(Description.class);
if(flag)
{
Description description = (Description)rt_class.getAnnotation(Description.class);
System.out.println("Utility's Description--->"+description.value());
for (Method method : methods) {
if(method.isAnnotationPresent(Author.class))
{
Author author = (Author)method.getAnnotation(Author.class);
System.out.println("Utility's Author--->"+author.name()+" from "+author.group());
}
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
娉細榪欐槸涓笌鑷畾涔堾Description鍜孈Author閰嶅鐨勫熀紜€妗嗘灦鎴栧伐鍏風被錛岄€氳繃姝ょ被鏉ヨ幏寰椾笌鏅€欽ava綾籙tility.java鍏寵仈鐨勪俊鎭?鍗蟲弿榪板拰浣滆€呫€?/p>
榪愯AnalysisAnnotation,杈撳嚭緇撴灉涓猴細
Utility's Description--->榪欐槸涓€涓湁鐢ㄧ殑宸ュ叿綾?/span>
Utility's Author--->haoran_202 from com.magc
mid | mname | mpid | quickey | validate |
1 | 鏂囦歡 | ctrl+f | 1錛?錛?錛?錛?1錛?3錛?5 | |
2 | 緙栬緫 | ctrl+e | ||
3 | 鏂板緩 | 1 | alt+w | |
4 | 鏂囦歡澶?/td> | 3 |
|