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

溫馨提示×

溫馨提示×

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

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

有哪些Java的相關知識點

發布時間:2021-10-25 14:51:05 來源:億速云 閱讀:133 作者:iii 欄目:編程語言

這篇文章主要介紹“有哪些Java的相關知識點”,在日常操作中,相信很多人在有哪些Java的相關知識點問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”有哪些Java的相關知識點”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是反射

一般情況下,需要一個功能的前提是遇到了什么問題,先列舉一些問題,再通過反射是如何解決這些問題。普通開發人員工作中最常遇到的問題是,需要生成代理對象。解決方法是:將需要加強的類,利用反射加載之后,與補充的邏輯進行融合,產生一個新的對象,這個對象就是代理對象,即具備原有的類以及新的邏輯的增強后的類。比如Man類里有個  eat  方法,我們希望執行eat方法之前和之后都需要執行洗手,洗碗,而又不能修改eat方法,這個時候就需要使用代理對象,在執行eat之前和之后執行這些操作。

應用場景

開發通用框架,反射最重要的用途就是開發各種通用框架,很多框架比如Spring,都是配置化的,為了保證框架的通用性,它們可能需要根據配置文件加載不同的對象和類,調用不同的方法,這個時候就需要使用反射,在運行時動態的加載需要的對象。動態代理,在切面編程中,需要攔截特定的方法,通常會使用動態代理,動態代理需要使用反射技術來實現。注解:注解也是使用了反射機制,根據注解的標記來調用注解解釋器,執行行為,如果沒有反射機制,注解就會失效。可擴展功能,應用程序可以通過使用完全限定名稱創建可擴展的對象實例。

反射和代理涉及的術語

真實對象:就是原始類實例化后產生的對象,未經過代理模式加強后的對象。代理對象:利用代理模式增強后的對象。動態代理類:代理對象邏輯處理器,即,增強的邏輯所處的位置,需要傳入真實對象產生關聯的動態代理對象。invocationHandler  接口:動態代理類需要實現這個接口,并且重寫 invoke方法,增強的邏輯在 invoke 方法里,每個代理類的實例都關聯到了一個  Handler,當我們調用代理對象的時候,會轉發到invocationHandler接口的invoke方法進行調用。Proxy:代理類,用于動態代理對象傳入之后,產生代理對象。

反射與代理關系

代理模式的主要作用產生代理對象從而實現增強后的方法,反射作為Java提供的特性,是實現代理模式的基礎,即,利用反射技術獲取和操作Java程序里的類,從而對這些類進行包裝盒加工,產生代理對象。獲取代理對象:第一步:調用  Proxy.newProxyInstance 獲得一個動態代理對象,其接收三個參數,上個參數分別是

  1. ClassLoader 對象,定義哪個ClassLoader對象進行生成代理對象進行加載

  2. 一個 Interface  對象數組,表示我們需要給代理對象提供什么接口,如果給其提供一組接口,那么這個代理對象就利用了多態實現了該接口。通過多態就實現調用這組接口中的方法。3.一個InvocationHandler的實現類對象,表示的是當我這個動態代理對象在調用方法的時候,會關聯到哪一個invocationHandler的實現類對象上。第二步:  獲得代理對象的類對象 第三步: 獲得代理類的所有方法 第四步:通過代理對象調用實現類的方法,觸發我們的重點步驟,invocationHandler  接口的實現類的invoked方法,從而執行實現類的方法。第五步:調用invocationHandler 接口 傳入了三個參數,這三個參數分別為:

  3. proxy 指代我們所代理的那個真是對象。

  4. method 我們需要調用的方法

  5. args 需要傳入的參數

jdk 動態代理和CGLIB動態代理的區別

代理方式:通過繼承真實對象的類或者實現其所需要實現的接口,把增強的邏輯補充進去完成。jdk動態代理是通過實現接口完成,當一個類是通過實現接口產生,就是jdk動態代理。CGLIB動態代理通過繼承類完成,當一個類沒有實現接口,只能使用jdk動態代理。

Reflection框架

Java里提供了反射獲取類的各個屬性和方法的類,需要拿到類才能進行相應的操作,但是反射框架,Reflections  不但能獲取classpath下的類,還能根據特定的注解獲取。Reflections  通過掃描classpath,索引元數據,并且允許在允許時查詢元數據。使用Reflections可以很輕松的獲取下面的元數據

  1. 某個類型的全部子類

  2. 只要類型,構造器,方法,字段上帶有特定的注解,便能獲取帶有這個注解的全部信息。

  3. 獲取所有匹配某個正則表達式的資源

  4. 獲取帶有特定簽名的方法,包括參數,參數注解,返回類型。

  5. 獲取方法的名字,

  6. 獲取代理里所有的字段,方法名,構造器的使用

到此,關于“有哪些Java的相關知識點”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

耿马| 衡阳市| 闵行区| 黄平县| 利津县| 咸阳市| 万载县| 东台市| 靖西县| 隆化县| 宝应县| 克山县| 佛山市| 镇雄县| 大足县| 阿合奇县| 乳源| 如东县| 五台县| 突泉县| 金华市| 红桥区| 遵义县| 平顶山市| 宿松县| 启东市| 大埔区| 富宁县| 西峡县| 平泉县| 怀化市| 南宫市| 松滋市| 都江堰市| 祁门县| 荣昌县| 鹿泉市| 井研县| 汉川市| 凤凰县| 西青区|