国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java中的注解,自定義注解

這篇具有很好參考價值的文章主要介紹了Java中的注解,自定義注解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Java中的注解,自定義注解

框架 = 注解 + 反射 + 設(shè)計模式

1. 注解概述

注解(Annotation)是從JDK5.0開始引入,以“@注解名”在代碼中存在。

Annotation 可以像修飾符一樣被使用,可用于修飾包、類、構(gòu)造器、方法、成員變量、參數(shù)、局部變量的聲明。還可以添加一些參數(shù)值,這些信息被保存在 Annotation 的 “name=value” 對中。

注解可以在類編譯、運行時進行加載,體現(xiàn)不同的功能。

2. 注解與注釋

注解也可以看做是一種注釋,通過使用 Annotation,可以在不改變原有邏輯的情況下,在源文件中嵌入一些補充信息。但是,注解,不同于單行注釋和多行注釋。

  • 對于單行注釋和多行注釋是給程序員看的。
  • 而注解是可以被編譯器或其他程序讀取的。程序還可以根據(jù)注解的不同,做出相應(yīng)的處理。

3. 注解的重要性

在JavaSE中,注解的使用目的比較簡單,例如標記過時的功能,忽略警告等。在JavaEE/Android中注解占據(jù)了更重要的角色,例如用來配置應(yīng)用程序的任何切面,代替JavaEE舊版中所遺留的繁冗代碼和XML配置等。

未來的開發(fā)模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,Struts2有一部分也是基于注解的了。

4. 常見的Annotation作用

4.1 生成文檔相關(guān)的注解

@author: 標明開發(fā)該類模塊的作者,多個作者之間使用,分割
@version: 標明該類模塊的版本
@see: 參考轉(zhuǎn)向,也就是相關(guān)主題
@since: 從哪個版本開始增加的
@param: 對方法中某參數(shù)的說明,如果沒有參數(shù)就不能寫
@return: 對方法返回值的說明,如果方法的返回值類型是void就不能寫
@exception: 對方法可能拋出的異常進行說明 ,如果方法沒有用throws顯式拋出的異常就不能寫

4.2 在編譯時進行格式檢查(JDK內(nèi)置的三個基本注解)

@Override: 限定重寫父類方法,該注解只能用于方法

  • 用于檢測被標記的方法為有效的重寫方法,如果不是,則報編譯錯誤!
  • 只能標記在方法上。
  • 它會被編譯器程序讀取。

@Deprecated: 用于表示所修飾的元素(類,方法等)已過時。通常是因為所修飾的結(jié)構(gòu)危險或存在更好的選擇

  • 用于表示被標記的數(shù)據(jù)已經(jīng)過時,不推薦使用。
  • 可以用于修飾 屬性、方法、構(gòu)造、類、包、局部變量、參數(shù)。
  • 它會被編譯器程序讀取。
    @SuppressWarnings: 抑制編譯器警告
  • 抑制編譯警告。當我們不希望看到警告信息的時候,可以使用 SuppressWarnings 注解來抑制警告信息
  • 可以用于修飾類、屬性、方法、構(gòu)造、局部變量、參數(shù)
  • 它會被編譯器程序讀取。
  • 可以指定的警告類型有(了解)
    • all,抑制所有警告
    • unchecked,抑制與未檢查的作業(yè)相關(guān)的警告
    • unused,抑制與未用的程式碼及停用的程式碼相關(guān)的警告
    • deprecation,抑制與淘汰的相關(guān)警告
    • nls,抑制與非 nls 字串文字相關(guān)的警告
    • null,抑制與空值分析相關(guān)的警告
    • rawtypes,抑制與使用 raw 類型相關(guān)的警告
    • static-access,抑制與靜態(tài)存取不正確相關(guān)的警告
    • static-method,抑制與可能宣告為 static 的方法相關(guān)的警告
    • super,抑制與置換方法相關(guān)但不含 super 呼叫的警告

5. 元注解

JDK1.5在java.lang.annotation包定義了4個標準的meta-annotation類型,它們被用來提供對其它 annotation類型作說明。

(1)@Target:用于描述注解的使用范圍

  • 可以通過枚舉類型ElementType的10個常量對象來指定
  • TYPE,METHOD,CONSTRUCTOR,PACKAGE…

(2)@Retention:用于描述注解的生命周期

  • 可以通過枚舉類型RetentionPolicy的3個常量對象來指定
  • SOURCE(源代碼)、CLASS(字節(jié)碼)、RUNTIME(運行時)
  • 唯有RUNTIME階段才能被反射讀取到。

(3)@Documented:表明這個注解應(yīng)該被 javadoc工具記錄。
(4)@Inherited:允許子類繼承父類中的注解

示例代碼:

package java.lang;

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
package java.lang;

import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
    String[] value();
}
package java.lang;

import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}

6. 自定義注解

一個完整的注解應(yīng)該包含三個部分: (1)聲明(2)使用、 (3)讀取

聲明自定義注解:

【元注解】
【修飾符】 @interface 注解名{
    【成員列表】
}
  • 自定義注解可以通過四個元注解@Retention,@Target@Inherited,@Documented,分別說明它的聲明周期,使用位置,是否被繼承,是否被生成到API文檔中。
  • Annotation 的成員在 Annotation 定義中以無參數(shù)有返回值的抽象方法的形式來聲明,我們又稱為配置參數(shù)。返回值類型只能是八種基本數(shù)據(jù)類型、String類型、Class類型、enum類型、Annotation類型、以上所有類型的數(shù)組
  • 可以使用 default 關(guān)鍵字為抽象方法指定默認返回值
  • 如果定義的注解含有抽象方法,那么使用時必須指定返回值,除非它有默認值。格式是“方法名 = 返回值”,如果只有一個抽象方法需要賦值,且方法名為value,可以省略“value=”,所以如果注解只有一個抽象方法成員,建議使用方法名value。

6.1 定義自定義注解

import java.lang.annotation.*;

@Inherited
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
    String value();
}
import java.lang.annotation.*;

@Inherited
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
    String columnName();
    String columnType();
}

6.2 使用自定義注解

@Table("t_stu")
public class Student {
    @Column(columnName = "sid",columnType = "int")
    private int id;

    @Column(columnName = "sname",columnType = "varchar(20)")
    private String name;
}

6.3 讀取和處理自定義注解

自定義注解必須配上注解的信息處理流程才有意義。

自己定義的注解,只能使用反射的代碼讀取。所以自定義注解的聲明周期必須是RetentionPolicy.RUNTIME文章來源地址http://www.zghlxwxcb.cn/news/detail-415321.html

到了這里,關(guān)于Java中的注解,自定義注解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Spring框架中的8種設(shè)計模式

    前言 Spring框架中的8種設(shè)計模式分別是: 1、簡單工廠。2、工廠方法。3、單例模式。4、適配器模 式。5、裝飾器模式。6、代理模式。7、觀察者模式。8、策略模式. 1、簡單工廠 Spring中的 BeanFactory 就是簡單工廠模式的體現(xiàn), 根據(jù)傳入一個唯一的標識來獲得Bean對象 , 但是否在

    2024年02月05日
    瀏覽(15)
  • Day14:單元測試、Junit單元測試框架、反射、注解

    Day14:單元測試、Junit單元測試框架、反射、注解

    針對最小的功能單元(方法)進行正確性測試 編寫正規(guī)的單元測試框架 傳統(tǒng)的無法執(zhí)行自動化測試,且無法得到測試報告 Junit的作用: 測試類取名:原類名+Test(大駝峰) 測試方法取名:test+原函數(shù)名稱(小駝峰) 測試方法:必須public,無參,無返回值 測試方法上面必須加

    2024年04月14日
    瀏覽(23)
  • 【設(shè)計模式-6】建造者模式的實現(xiàn)與框架中的應(yīng)用

    【設(shè)計模式-6】建造者模式的實現(xiàn)與框架中的應(yīng)用

    ?建造者模式又被成為生成器模式,是一種使用頻率比較低,相對復(fù)雜的創(chuàng)建型模式,在很多源碼框架中可以看到建造者的使用場景,稍后我們會在本文末尾展示幾個框架的使用案例。 ?建造者模式所構(gòu)造的對象通常是比較復(fù)雜而且龐大的,也是按照既定的構(gòu)建順序?qū)ο笾?/p>

    2024年02月02日
    瀏覽(32)
  • 反射和工廠設(shè)計模式---工廠設(shè)計模式

    工廠模式(Factory Pattern)是開發(fā)中比較常用的設(shè)計模式之一。 它屬于創(chuàng)建型模式(單例模式就是創(chuàng)建型模式的一種),這種模式讓我們 在創(chuàng)建對象時不會直接暴露創(chuàng)建邏輯,而是通過使用一個共同的接口來完成對象的創(chuàng)建 。 工廠模式可以分為三種,分別是簡單工廠模式、工廠方

    2024年02月13日
    瀏覽(22)
  • java注解與反射

    java注解與反射

    java注解與反射十分重要,是很多框架的底層 注解的作用: 注解的格式:@注釋名,如@override表示重寫方法,而且有些還可以添加一些參數(shù)值,如@SuppressWarnings(value=\\\"unchecjed\\\") 注解可以附加在package,class,method,field等上面,相當于添加了額外的輔助信息??梢酝ㄟ^反射機制編程

    2024年02月07日
    瀏覽(17)
  • 狀態(tài)設(shè)計模式(State Pattern)[論點:概念、相關(guān)角色、圖示、示例代碼、框架中的運用、適用場景]

    狀態(tài)設(shè)計模式(State Pattern)[論點:概念、相關(guān)角色、圖示、示例代碼、框架中的運用、適用場景]

    ??????? 狀態(tài)模式 (State Pattern)是一種行為型設(shè)計模式,用于解決對象在不同狀態(tài)下的行為問題。它允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。狀態(tài)模式主要包含三個部分: 上下文 (Context)、 狀態(tài)接口 (State)和 具體狀態(tài)實現(xiàn)類 (ConcreteState)。 狀態(tài)接口(St

    2023年04月14日
    瀏覽(28)
  • 生成器設(shè)計模式(Builder Design Pattern)[論點:概念、圖示、示例、框架中的應(yīng)用、場景]

    生成器設(shè)計模式(Builder Design Pattern)[論點:概念、圖示、示例、框架中的應(yīng)用、場景]

    ??????? 生成器設(shè)計模式(Builder Design Pattern)是一種創(chuàng)建型設(shè)計模式,用于處理具有多個屬性和復(fù)雜構(gòu)造過程的對象。生成器模式通過將對象的構(gòu)建過程與其表示分離,使得相同的構(gòu)建過程可以創(chuàng)建不同的表示。這有助于減少構(gòu)造函數(shù)的參數(shù)個數(shù),提高代碼的可讀性和可維

    2023年04月11日
    瀏覽(25)
  • 命令設(shè)計模式(Command Pattern)[論點:概念、組成角色、相關(guān)圖示、示例代碼、框架中的運用、適用場景]

    命令設(shè)計模式(Command Pattern)[論點:概念、組成角色、相關(guān)圖示、示例代碼、框架中的運用、適用場景]

    ??????? 命令設(shè)計模式 (Command Pattern)是一種行為設(shè)計模式,它將請求的操作封裝為一個對象,從而實現(xiàn)請求者和執(zhí)行者之間的解耦。這樣,請求者只需要知道如何發(fā)送請求,而無需關(guān)心請求的具體執(zhí)行過程。命令模式在很多場景下都非常有用,例如撤銷操作、延遲執(zhí)行、

    2024年02月01日
    瀏覽(25)
  • 【JAVA】單元測試、反射、注解、動態(tài)代理

    @Test 測試方法 @Before 用來修飾實例方法,該方法會在每一個測試方法執(zhí)行之前執(zhí)行一次。 @After 用來修飾實例方法,該方法會在每一個測試方法執(zhí)行之后執(zhí)行一次。 @Before Class 用來靜態(tài)修飾方法,該方法會在所有測試方法之前只執(zhí)行一次。 @After Class 用來靜態(tài)修飾方法,該方法

    2024年02月11日
    瀏覽(20)
  • Java補充內(nèi)容(Junit 反射 注解)

    Java補充內(nèi)容(Junit 反射 注解)

    測試分類: 1. 黑盒測試:不需要寫代碼,給輸入值,看程序是否能夠輸出期望的值。 2. 白盒測試:需要寫代碼的。關(guān)注程序具體的執(zhí)行流程。 Junit使用:白盒測試 步驟: 定義一個測試類(測試用例) 建議: 測試類名:被測試的類名Test CalculatorTest 包名:xxx.xxx.xx.test cn.itcast.

    2024年02月16日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包