注解

what

1.注解:Java中的元數(shù)據(jù)
元數(shù)據(jù)肥败?:描述數(shù)據(jù)的數(shù)據(jù)莱没,更通俗一點(diǎn)胁编,就是描述代碼間關(guān)系,或者代碼與其他資源(例如數(shù)據(jù)庫表)之間內(nèi)在聯(lián)系的數(shù)據(jù)专酗。eg:.xml配置文件
2.注解相當(dāng)于一種標(biāo)記睹逃,在程序中加了注解就等于為程序打上了某種標(biāo)記,里面的屬性就是鍵值對(duì)祷肯。程序可以利用java的反射機(jī)制來了解類及各種元素上有無何種標(biāo)記沉填,針對(duì)不同的標(biāo)記,就去做相應(yīng)的事件佑笋。標(biāo)記可以加在包翼闹,類,字段允青,方法橄碾,方法的參數(shù)以及局部變量上卵沉。JDK定義成@interface
3.java的注解本質(zhì)上是一個(gè)接口,而且是繼承了接口Annotation的接口法牲,見JDK文檔

/**
 * The common interface extended by all annotation types.  Note that an
 * interface that manually extends this one does <i>not</i> define
 * an annotation type.  Also note that this interface does not itself
 * define an annotation type.
 *
 * More information about annotation types can be found in section 9.6 of
 * <cite>The Java? Language Specification</cite>.
 *
 * The {@link java.lang.reflect.AnnotatedElement} interface discusses
 * compatibility concerns when evolving an annotation type from being
 * non-repeatable to being repeatable.
 *
 * @author  Josh Bloch
 * @since   1.5 
 */
public interface Annotation {
}

why

本質(zhì)注解和.xml文件實(shí)現(xiàn)效果是一致的:

.xml:集中式的元數(shù)據(jù)史汗,與源代碼無綁定
@interface(注解):分散式的元數(shù)據(jù),與源代碼緊綁定

如何選擇拒垃?

1.約定大于一切
2.用配置還是走XML吧停撞,比如事務(wù)配置,比如數(shù)據(jù)庫連接池等等
3.注解缺乏靈活性悼瓮,在實(shí)現(xiàn)復(fù)雜的邏輯上戈毒,沒有XML來的更加強(qiáng)大;注解就是要么用横堡,要么不用埋市,不可用功能的一部分
4.注解簡(jiǎn)單,但是不容易理解
...

how

xml:

<?xml version="1.0" encoding="UTF-8"?>
<SCHOOL>
    <name>藍(lán)胖子</name>
    <address>日本東京</address>
    <food name="banana">
        <num>2<num>
    </food>
    <food name="apple">
        <num>3</num>
    </food>
</SCHOOL>

注解:

package com.test.zy.xml;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
 
public class Student {
     
    private String studentNum;
    private String studentName;
    private String studentGrade;
    private int age;
     
    @XmlElement(name="num")
    public String getStudentNum() {
        return studentNum;
    }
    public void setStudentNum(String studentNum) {
        this.studentNum = studentNum;
    }
    @XmlElement(name="name")
    public String getStudentName() {
        return studentName;
    }
    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }
    @XmlAttribute(name="grade")
    public String getStudentGrade() {
        return studentGrade;
    }
    public void setStudentGrade(String studentGrade) {
        this.studentGrade = studentGrade;
    }
    @XmlElement
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
     
    @Override
    public String toString() {
        return "Student [studentNum=" + studentNum + ", studentName="
                + studentName + ", studentGrade=" + studentGrade + ", age="
                + age + "]";
    }
     
     
 
}

注解生命周期

一個(gè)注解可以有三個(gè)生命周期命贴,它默認(rèn)的生命周期是保留在一個(gè)CLASS文件道宅,
  但它也可以由一個(gè)@Retetion的元注解指定它的生命周期。
  a.java源文件
    當(dāng)在一個(gè)注解類前定義了一個(gè)@Retetion(RetentionPolicy.SOURCE)的注解胸蛛,那么說明該注解只保留在一個(gè)源文件當(dāng)中污茵,當(dāng)編譯器將源文件編譯成class文件時(shí),它不會(huì)將源文件中定義的注解保留在class文件中葬项。
   b. class文件中
   當(dāng)在一個(gè)注解類前定義了一個(gè)@Retetion(RetentionPolicy.CLASS)的注解泞当,那么說明該注解只保留在一個(gè)class文件當(dāng)中,當(dāng)加載class文件到內(nèi)存時(shí)民珍,虛擬機(jī)會(huì)將注解去掉襟士,從而在程序中不能訪問。
  c. 程序運(yùn)行期間
   當(dāng)在一個(gè)注解類前定義了一個(gè)@Retetion(RetentionPolicy.RUNTIME)的注解穷缤,那么說明該注解在程序運(yùn)行期間都會(huì)存在內(nèi)存當(dāng)中敌蜂。此時(shí)箩兽,我們可以通過反射來獲得定義在某個(gè)類上的所有注解津肛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市汗贫,隨后出現(xiàn)的幾起案子身坐,更是在濱河造成了極大的恐慌,老刑警劉巖落包,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件部蛇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡咐蝇,警方通過查閱死者的電腦和手機(jī)涯鲁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抹腿,你說我怎么就攤上這事岛请。” “怎么了警绩?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵崇败,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我肩祥,道長(zhǎng)后室,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任混狠,我火速辦了婚禮岸霹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘将饺。我一直安慰自己松申,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布俯逾。 她就那樣靜靜地躺著贸桶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桌肴。 梳的紋絲不亂的頭發(fā)上皇筛,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音坠七,去河邊找鬼水醋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛彪置,可吹牛的內(nèi)容都是我干的拄踪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拳魁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼惶桐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起潘懊,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤姚糊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后授舟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體救恨,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年释树,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肠槽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擎淤。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秸仙,靈堂內(nèi)的尸體忽然破棺而出揉燃,到底是詐尸還是另有隱情,我是刑警寧澤筋栋,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布炊汤,位于F島的核電站,受9級(jí)特大地震影響弊攘,放射性物質(zhì)發(fā)生泄漏抢腐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一襟交、第九天 我趴在偏房一處隱蔽的房頂上張望迈倍。 院中可真熱鬧,春花似錦捣域、人聲如沸啼染。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迹鹅。三九已至,卻和暖如春贞言,著一層夾襖步出監(jiān)牢的瞬間斜棚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工该窗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弟蚀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓酗失,卻偏偏與公主長(zhǎng)得像义钉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子规肴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容