欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Java注解和動態(tài)代理

 更新時(shí)間:2017年09月21日 11:57:38   作者:一個(gè)想變文藝的程序員  
這篇文章主要介紹了Java中有關(guān)注解和動態(tài)代理的一些知識,涉及了Annotation、數(shù)據(jù)類型等相關(guān)內(nèi)容,需要的朋友可以參考下。

本文主要介紹Java中與注解和動態(tài)代理有關(guān)的部分知識,接下來我們看看具體內(nèi)容。

Annotation(注解)

其實(shí)就是代碼里的特殊標(biāo)記, 它用于替代配置文件,也就是說,傳統(tǒng)方式通過配置文件告訴類如何運(yùn)行,有了注解技術(shù)后,開發(fā)人員可以通過注解告訴類如何運(yùn)行。

1、 三個(gè)基本的Annotation:

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

Deprecated:用于表示某個(gè)程序元素(類, 方法等)已過時(shí)

SuppressWarnings:抑制編譯器警告.

2、自定義Annotation 使用@interface 關(guān)鍵字

配置文件的信息,在注解中采用屬性描述

例:

String name();

帶默認(rèn)值的方式:String name() default “xxx”

注解屬性的類型只能是如下類型:

String類型,8大基本數(shù)據(jù)類型,Class類型,枚舉類型,注解類型,以上類型的一維數(shù)組

特殊屬性value:如果注解中有一個(gè)名稱value的屬性,那么使用注解時(shí)可以省略value=部分,如@MyAnnotation(“xxx")

特殊屬性value[];

3、元Annotation指修飾Annotation的Annotation。

JDK中定義了如下元Annotation:

Retention: 只能用于修飾一個(gè)Annotation 定義, 用于指定該Annotation 可以保留的域, @Rentention 包含一個(gè)RetentionPolicy 類型的成員變量, 通過這個(gè)變量指定域。

RetentionPolicy.CLASS:編譯器將把注解記錄在 class 文件中. 當(dāng)運(yùn)行 Java 程序時(shí), JVM 不會保留注解. 這是默認(rèn)值

RetentionPolicy.RUNTIME:編譯器將把注釋記錄在 class 文件中. 當(dāng)運(yùn)行 Java 程序時(shí), JVM 會保留注解. 程序可以通過反射獲取該注釋(所以自定義一個(gè)注解時(shí),一般都要加這個(gè)元注解)

RetentionPolicy.SOURCE:編譯器直接丟棄這種策略的注釋

4、@Target:指定注解用于修飾類的哪個(gè)成員。@Target 包含了一個(gè)名為value,類型為ElementType的成員變量。

@Documented: 用于指定被該元Annotation 修飾的Annotation 類將被javadoc 工具提取成文檔.

@Inherited: 被它修飾的Annotation 將具有繼承性.如果某個(gè)類使用了被@Inherited 修飾的Annotation, 則其子類將自動具有該注解

動態(tài)代理

Java提供了一個(gè)Proxy類,調(diào)用它的newInstance方法可以生成某個(gè)對象的代理對象,使用該方法生成代理對象時(shí),需要三個(gè)參數(shù):

1.生成代理對象使用哪個(gè)類裝載器

2.生成哪個(gè)對象的代理對象,通過接口指定

3.生成的代理對象的方法里干什么事,由開發(fā)人員編寫handler接口的實(shí)現(xiàn)來指定。

初學(xué)者必須理解,或不理解必須記住的2件事情:

Proxy類負(fù)責(zé)創(chuàng)建代理對象時(shí),如果指定了handler(處理器),那么不管用戶調(diào)用代理對象的什么方法,該方法都是調(diào)用處理器的invoke方法。

由于invoke方法被調(diào)用需要三個(gè)參數(shù):代理對象、方法、方法的參數(shù),因此不管代理對象哪個(gè)方法調(diào)用處理器的invoke方法,都必須把自己所在的對象、自己(調(diào)用invoke方法的方法)、方法的參數(shù)傳遞進(jìn)來。

在動態(tài)代理技術(shù)里,由于不管用戶調(diào)用代理對象的什么方法,都是調(diào)用開發(fā)人員編寫的處理器的invoke方法(這相當(dāng)于invoke方法攔截到了代理對象的方法調(diào)用)。

并且,開發(fā)人員通過invoke方法的參數(shù),還可以在攔截的同時(shí),知道用戶調(diào)用的是什么方法,因此利用這兩個(gè)特性,就可以實(shí)現(xiàn)一些特殊需求,例如:攔截用戶的訪問請求,以檢查用戶是否有訪問權(quán)限、動態(tài)為某個(gè)對象添加額外的功能。

總結(jié)

以上就是本文關(guān)于Java注解和動態(tài)代理相關(guān)知識的全部內(nèi)容,希望對大家Java程序設(shè)計(jì)有所幫助。更多Java內(nèi)容,感興趣的朋友可以閱讀:關(guān)于Java反射機(jī)制 你需要知道的事情ibatis學(xué)習(xí)之搭建Java項(xiàng)目、Java編程思想對象的容納實(shí)例詳解等。

感謝大家對本站的支持!

相關(guān)文章

  • java高效讀大文件(csv,text)的幾種處理方式

    java高效讀大文件(csv,text)的幾種處理方式

    這篇文章主要給大家介紹了關(guān)于java高效讀大文件(csv,text)的幾種處理方式,Java中處理大文件時(shí),通常需要采取一些特定的策略來避免內(nèi)存溢出或性能問題,文中通過代碼及圖片介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 基于eclipse-temurin鏡像部署spring boot應(yīng)用的實(shí)現(xiàn)示例

    基于eclipse-temurin鏡像部署spring boot應(yīng)用的實(shí)現(xiàn)示例

    本文提供了基于eclipse-temurin鏡像部署Spring Boot應(yīng)用的詳細(xì)實(shí)現(xiàn)示例,通過使用Docker鏡像,可以輕松地創(chuàng)建和管理Spring Boot應(yīng)用程序的容器化環(huán)境,感興趣的可以了解一下
    2023-08-08
  • Java實(shí)現(xiàn)加鹽加密算法的示例詳解

    Java實(shí)現(xiàn)加鹽加密算法的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)加鹽加密算法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • java中g(shù)c算法實(shí)例用法

    java中g(shù)c算法實(shí)例用法

    在本篇文章里小編給大家整理了一篇關(guān)于java中g(shù)c算法實(shí)例用法,有興趣的朋友們可以參考學(xué)習(xí)下。
    2021-01-01
  • HttpClient實(shí)現(xiàn)表單提交上傳文件

    HttpClient實(shí)現(xiàn)表單提交上傳文件

    這篇文章主要為大家詳細(xì)介紹了HttpClient實(shí)現(xiàn)表單提交上傳文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • seata的部署和集成詳細(xì)介紹

    seata的部署和集成詳細(xì)介紹

    這篇文章主要介紹了Java seata的部署和集成,文章中有詳細(xì)的代碼示例和圖片講解,對學(xué)習(xí)seata有一定的參考價(jià)值,需要的朋友可以參考一下
    2023-04-04
  • mybatis查詢語句的背后揭秘

    mybatis查詢語句的背后揭秘

    這篇文章主要給大家介紹了關(guān)于mybatis查詢語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java的字節(jié)緩沖流與字符緩沖流解析

    Java的字節(jié)緩沖流與字符緩沖流解析

    這篇文章主要介紹了Java的字節(jié)緩沖流與字符緩沖流解析,Java 緩沖流是Java I/O庫中的一種流,用于提高讀寫數(shù)據(jù)的效率,它通過在內(nèi)存中創(chuàng)建緩沖區(qū)來減少與底層設(shè)備的直接交互次數(shù),從而減少了I/O操作的開銷,需要的朋友可以參考下
    2023-11-11
  • Java設(shè)計(jì)模式之模板方法模式Template Method Pattern詳解

    Java設(shè)計(jì)模式之模板方法模式Template Method Pattern詳解

    在我們實(shí)際開發(fā)中,如果一個(gè)方法極其復(fù)雜時(shí),如果我們將所有的邏輯寫在一個(gè)方法中,那維護(hù)起來就很困難,要替換某些步驟時(shí)都要重新寫,這樣代碼的擴(kuò)展性就很差,當(dāng)遇到這種情況就要考慮今天的主角——模板方法模式
    2022-11-11
  • 關(guān)于為何說JAVA中要慎重使用繼承詳解

    關(guān)于為何說JAVA中要慎重使用繼承詳解

    Java繼承是面向?qū)ο蟮淖铒@著的一個(gè)特征,然而下面這篇文章主要給大家介紹了關(guān)于為何說JAVA中要慎重使用繼承的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08

最新評論