中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談Java注解和動態代理

發布時間:2020-09-09 22:08:03 來源:腳本之家 閱讀:189 作者:一個想變文藝的程序員 欄目:編程語言

本文主要介紹Java中與注解和動態代理有關的部分知識,接下來我們看看具體內容。

Annotation(注解)

其實就是代碼里的特殊標記, 它用于替代配置文件,也就是說,傳統方式通過配置文件告訴類如何運行,有了注解技術后,開發人員可以通過注解告訴類如何運行。

1、 三個基本的Annotation:

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

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

SuppressWarnings:抑制編譯器警告.

2、自定義Annotation 使用@interface 關鍵字

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

例:

String name();

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

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

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

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

特殊屬性value[];

3、元Annotation指修飾Annotation的Annotation。

JDK中定義了如下元Annotation:

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

RetentionPolicy.CLASS:編譯器將把注解記錄在 class 文件中. 當運行 Java 程序時, JVM 不會保留注解. 這是默認值

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

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

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

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

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

動態代理

Java提供了一個Proxy類,調用它的newInstance方法可以生成某個對象的代理對象,使用該方法生成代理對象時,需要三個參數:

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

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

3.生成的代理對象的方法里干什么事,由開發人員編寫handler接口的實現來指定。

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

Proxy類負責創建代理對象時,如果指定了handler(處理器),那么不管用戶調用代理對象的什么方法,該方法都是調用處理器的invoke方法。

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

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

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

總結

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

感謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌图县| 小金县| 泾源县| 科技| 蓬莱市| 合肥市| 镇原县| 金塔县| 辽中县| 阜新| 黄山市| 通海县| 鹤庆县| 克山县| 昌乐县| 大姚县| 安新县| 栖霞市| 北川| 共和县| 大兴区| 类乌齐县| 青川县| 徐闻县| 涞源县| 周口市| 涞水县| 博白县| 浮山县| 冕宁县| 二连浩特市| 司法| 南投市| 应城市| 敖汉旗| 本溪| 宜兰县| 南陵县| 雷州市| 忻城县| 彩票|