<Java> java註解介紹

來源:互聯網
上載者:User

標籤:

前言

  在剛學java web開發的時候,我第一次看到註解不是在java裡,而是在spring裡,於是很長一段時間裡,我都認為註解是spring特有的技術,後來用到mybatis的時候,發現也有不少註解,再加上經常在java中看到的@Override之類的,才懷疑註解是不是java的東西。可是懷疑歸懷疑,但是開發都快一年多了,從來沒有想過去瞭解註解這個東西,更別說開發自己的註解了。

Java註解介紹

  近來,項目中有許多額外的xml檔案,我一直認為這是非常不好的,聯想到spring可以將applicationContext.xml中的東西用註解寫進類中,於是在想是不是也可以試試開發自己的註解。

  首先,來看java裡面的annotation包。

  

  從IDE的標誌就可以看出來,有四個註解隱藏在其中,這四個註解正是java的元註解,也就是”註解的註解“。它們依次是:

  1.Document:沒有參數,就是表明將這個註解包含在javadoc中

  2.Inherited:沒有參數,表明可以被繼承

  3.Retention:有參數(可選項就在下一個RerentionPolicy中),表明該註解可以被什麼層級儲存

        1.Source:源碼層級,也就是說這個註解就是給編譯器看看的,看完就扔了,不會被編譯,也就是在.class檔案中是找不到的,比如@Override

        2.Class:能在class檔案中找到,但是在VM運行時是找不到的。這個是預設層級。

        3.Runtime:在VM運行時都能保留,因此可以通過java反射機制來讀取註解資訊,一般來說這個用的最多。比如:@Value、@Controller、@Bean

  4.Target:有參數(可選項在ElementType中),表明該註解可以被放在類的哪個層面上,預設是全部。

  有了這幾個,就已經可以開發自己的註解了,試一下:

@Retention(RetentionPolicy.RUNTIME)public @interface Info {    String book() default "";}public class Book {    @Info(book = "Thinking in java")    String bookName;    public String getName(){        return bookName;    }        public static void main(String[] args) {        Field[] fields = Book.class.getDeclaredFields();        for (Field field : fields){            if(field.isAnnotationPresent(Info.class)){                Info info = field.getAnnotation(Info.class);                Book book = new Book();                book.bookName = info.book();                System.out.println(book.getName());            }        }    }}  

  簡單到爆,當然稍微需要有點java的反射基礎知識。一般我們用spring,mybatis之類的架構註解時,不用寫這些解析反射的代碼,是因為架構幫我們做好了。

<Java> java註解介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.