亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

java中的注解(Annotation)

李義 / 3203人閱讀

摘要:在中,注解是被當(dāng)做修飾符如之類來使用的。常用注解修飾重載父類方法修飾未來將被拋棄的類方法屬性等等關(guān)閉不當(dāng)編譯器警告信息。注解來源分類來自的注解如等等三方的注解如中的等等自定義注解通過元注解自定義的注解。是一個(gè)標(biāo)記注解,沒有成員。

簡介

注解,java中提供了一種原程序中的元素關(guān)聯(lián)任何信息、任何元素的途徑的途徑和方法。

注解是那些插入到源代碼中使用其他工具可以對其進(jìn)行處理的標(biāo)簽。注解不會(huì)改變程序的編譯方式。java編譯器會(huì)對包含注解與不包含注解的代碼生成相同的虛擬機(jī)指令。在java中,注解是被當(dāng)做修飾符(如public/static之類)來使用的。

注解與注釋

注釋是供人看的,注解是供程序調(diào)用的。一種是程序員寫給另一個(gè)程序員的,一種是程序員寫給計(jì)算機(jī)解析的。

常用注解

@Override : 修飾重載父類方法;

@Deprecated : 修飾未來將被拋棄的類/方法/屬性等等;

@SuppressWarnings: 關(guān)閉不當(dāng)編譯器警告信息。

注解運(yùn)行機(jī)制分類

源碼注解: 注解只在源碼中存在,編譯成.class文件中不存在;

編譯時(shí)注解: 注解存在于源碼與.class中,運(yùn)行時(shí)不存在;

運(yùn)行時(shí)注解: 在所有階段都存在,可以影響程序運(yùn)行邏輯。

注解來源分類

來自jdk的注解:如@Override /@Deprecated等等;

三方的注解: 如junit中的@Test/@Before等等;

自定義注解: 通過元注解自定義的注解。

元注解

給注解進(jìn)行注解,用于自定義注解。

@Target: 指明定義的注解的作用域,其值包括:

ElementType.CONSTRUCTOR: 構(gòu)造方法聲明;

ElementType.FIELD: 屬性/字段聲明;

ElementType.LOCAL_VARIABLE: 局部變量聲明;

ElementType.METHOD: 方法聲明;

ElementType.PACKAGE: 包聲明;

ElementType.PARAMETER: 參數(shù)聲明;

ElementType.TYPE: 類接口聲明;

ElementType.ANNOTATION_TYPE: 注解類型聲明;

ElementType.TYPE_PARAMETER: 類型參數(shù)聲明(@since 1.8);

ElementType.TYPE_USE: 類型使用(@since 1.8)

@Retention: 自定義注解的生命周期,其值包括:

RetentionPolicy.SOURCE: 只在源碼顯示,編譯時(shí)丟棄;

RetentionPolicy.CLASS: 編譯時(shí)記錄到.class中,運(yùn)行時(shí)忽略;

RetentionPolicy.RUNTIME: 運(yùn)行時(shí)存在,可通過反射來讀取。

@Inherited: 一個(gè)標(biāo)記注解,闡述了某個(gè)被標(biāo)注的類型是被繼承的,只能繼承與類。

@Documented: 用于描述其它類型的annotation應(yīng)該被作為被標(biāo)注的程序成員的公共API,因此可以被例如javadoc此類的工具文檔化。Documented是一個(gè)標(biāo)記注解,沒有成員。

自定義注解
//@Target(ElementType.METHOD)
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {
    String desc() default "";
    String author() default "";
    int age() default 18;
}

使用關(guān)鍵字@interface定義注解;

成員變量以無參無異常的方式聲明;

可以通過default關(guān)鍵字給成員變量指定默認(rèn)值;

成員變量的類型是受限制的,包括原始類型、String、Class、Annotation、Enumeration;

如果注解只有一個(gè)成員變量,則成員名稱必須取名value(),在使用中可以忽略成員名稱與賦值號(=);

注解可以沒有成員,沒有成員的注解稱為標(biāo)示注解。

使用注解
// @<注解名稱>(<成員名1>=<成員值1>,<成員名2>=<成員值2> ...)

@Description(desc = "I"m class annotation")
public class AnnotationApp {

    @Description(desc = "I"m method annotation",author = "rudy")
    public String eyeColor(){
        return "red";
    }
}
解析注解

通過反射獲取類、方法、成員上的運(yùn)行時(shí)注解信息,從而實(shí)現(xiàn)動(dòng)態(tài)控制程序運(yùn)行的邏輯。

import Annotation.Description;
import org.junit.Test;

public class AnnotationTest {

    @Test
    public void testParse() throws ClassNotFoundException {
        // 取出注解
        Class cls = Class.forName("Annotation.AnnotationApp");
        boolean isExit =  cls.isAnnotationPresent(Description.class);
        if(isExit){
            // 做邏輯處理
            Description annotation = (Description) cls.getAnnotation(Description.class);
            System.out.println("get annotation:" + annotation.desc());
        }else{
            System.out.println("no annotation!");
        }
    }
}

使用類加載器加載類,獲取類對象;

判斷是否存在類注解;

取出類注解,做邏輯處理;

方法注解類似。

他山之石

深入理解Java:注解(Annotation)--注解處理器: http://blog.csdn.net/z69183787/article/details/40378309

全面解析Java注解(視頻):http://www.imooc.com/learn/456

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/69846.html

相關(guān)文章

  • 簡單介紹 Java 中的注解 (Annotation)

    摘要:例子首先來看一個(gè)例子這里用了目的是告訴編譯器這個(gè)方法重寫了父類的方法如果編譯器發(fā)現(xiàn)父類中沒有這個(gè)方法就會(huì)報(bào)錯(cuò)這個(gè)注解的作用大抵是防止手滑寫錯(cuò)方法同時(shí)增強(qiáng)了程序的可讀性這里需要指出一點(diǎn)去掉并不會(huì)影響程序的執(zhí)行只是起到標(biāo)記的作用找到的實(shí)現(xiàn)關(guān)注點(diǎn) 1. 例子 首先來看一個(gè)例子: @Override public String toString() { return xxxxx; ...

    LMou 評論0 收藏0
  • 聊聊Java注解及實(shí)現(xiàn)

    摘要:前言注解就是提供了一種元程序中的元素關(guān)聯(lián)任何信息和著任何元數(shù)據(jù)的途徑和方法。注解是一個(gè)接口,程序可以通過反射來獲取指定程序元素的對象,然后通過對象來獲取注解里面的元數(shù)據(jù)。注解是及以后版本引入的。綜上所述元數(shù)據(jù)以標(biāo)簽的形式存在于代碼中。 前言 Annotation(注解)就是Java提供了一種元程序中的元素關(guān)聯(lián)任何信息和著任何元數(shù)據(jù)(metadata)的途徑和方法。Annotion(注解...

    The question 評論0 收藏0
  • Java基礎(chǔ)知識整理之注解

    摘要:注解提供了一種安全的類似注釋的機(jī)制,用來將任何的信息或元數(shù)據(jù)與程序元素類方法成員變量等進(jìn)行關(guān)聯(lián)。為程序的元素類方法成員變量加上更直觀更明了的說明,這些說明與程序的業(yè)務(wù)邏輯無關(guān),并且提供給指定的工具或框架使用。 什么是注解? Annotation 是 Java5 之后開始引入的新特性,中文為注解。注解提供了一種安全的類似注釋的機(jī)制,用來將任何的信息或元數(shù)據(jù)(metadata)與程序元素(...

    blastz 評論0 收藏0
  • java深度學(xué)習(xí)——注解

    摘要:的在日常開發(fā),特別是開發(fā)中使用廣泛,各種框架,測試框架多多少少都會(huì)引入一些注解。的功能是作用于程序元數(shù)據(jù)的特殊類型。而在編譯期使用注解則需要特殊的工具,本文不討論。可以看到通過類中的反射方法獲取到了這個(gè)類的注解以及其方法的注解。 Java的Annotation在日常開發(fā),特別是java web開發(fā)中使用廣泛,各種web框架,測試框架多多少少都會(huì)引入一些注解。若對java注解有一個(gè)全面深...

    Eric 評論0 收藏0
  • Java中的注解是怎樣工作的

    摘要:另一個(gè)很重要的因素是定義了一種標(biāo)準(zhǔn)的描述元數(shù)據(jù)的方式。對于注解,它的用戶就是虛擬機(jī),工作在字節(jié)碼層面,在編譯階段進(jìn)行檢查,其處理機(jī)制主要是內(nèi)部處理。 什么是注解 用一個(gè)詞就可以描述注解,那就是元數(shù)據(jù),即一種描述數(shù)據(jù)的數(shù)據(jù)。所以,可以說注解就是源代碼的元數(shù)據(jù)。比如,下面這段代碼: @Override public String toString() { return This is St...

    edagarli 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<