在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java反射技術實現對象的創建

Android編程精選 ? 來源:Android編程精選 ? 2023-05-22 14:25 ? 次閱讀

一. 基礎概念

Java中,一般我們創建一個對象可能會選擇new一下個實例。但是隨著我們技術的不斷提升,我們也學習到了,可以通過反射技術實現對象的創建。

可是,你有沒有想一下,什么時候我們改用new創建對象,什么時候我們改用反射創建對象呢?

兩者創建對象的效率又是如何呢?

//new方式創建對象
ReflectDemoreflectDemo=newReflectDemo();
//反射創建對象反射創建對象的三種方式
(1)ClassreflectDemoClass=ReflectDemo.class;
(2)ClassaClass=Class.forName("com.whale.springtransaction.transactiondemo.reflectdemo.ReflectDemo");
(3)ClassaClass=reflectDemoClass.getClass();

二. new 對象和反射創建對象的效率對比

//測試代碼如下
publicclassReflectDemo{
publicstaticvoidmain(String[]args)throwsIllegalAccessException,InstantiationException{
proxyObject();
newObject();
}

//new創建對象
//5
publicstaticvoidnewObject(){
longstartTime=System.currentTimeMillis();
inti;
for(i=0;ireflectDemoClass=ReflectDemo.class;
inti;
for(i=0;i
6000b410-f771-11ed-90ce-dac502259ad0.png

最終我們發現,new 100000000 個對象和反射創建 100000000 個對象,效率相差了很多倍。

所以下面我們來探討一下為什么這么大差別?

首先第一點,一般我們的Java代碼是需要編譯后在虛擬機里面運行的。

我們一般都是通過一個前端編輯器,比如javac,把java文件轉為class文件。

接下來,程序運行期間,可能會通過一個JIT,即時編譯器將字節碼文件轉換為計算機認識的機器碼文件。

另外一種可能是通過一個AOT編譯器,直接把java文件編譯為本地機器碼文件。其中JIT在程序運行期會對程序進行優化,但是反射是通過動態解析的方式,因此可能無法執行某些java虛擬機的優化。

總結起來有下面幾個原因:

Method#invoke 方法會對參數做封裝和解封操作

需要檢查方法可見

需要校驗參數

反射方法難以內聯

JIT 無法優化

三. 反射和new 的使用場景

反射的部分使用場景

Spring通過反射來幫我們實例化對象,并放入到Ioc容器中

使用JDBC鏈接數據庫時加載數據庫驅動Class.forName()

逆向代碼 例如反編譯

利用反射,在泛型為int的arryaList集合中存放一個String類型的對象

new 對象和反射的區別

new的對象無法訪問其中的私有屬性,反射出來的可以通過設置setAccessible()方法來省略訪問權限符。

new必須要知道類名,而反射創建對象不需要知道類型也可以創建

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2982

    瀏覽量

    106460
  • 編輯器
    +關注

    關注

    1

    文章

    812

    瀏覽量

    31603
  • 反射技術
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6023

原文標題:Java反射和new效率對比,差距有多大?

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何用java映射創建java對象和調用java對象

    java是一種解析語言,java程序是通過java虛擬機解析.class的方式運行起來。因此,java中就存在java映射的概念。下面介紹如
    發表于 04-11 14:43

    如何用java映射創建java對象和調用java對象的方法

    Method對象的invoke方法。好,現在上代碼:lolpackage com.bunchen.test;import java.lang.reflect.Constructor;import
    發表于 07-28 16:11

    JAVA語言與面向對象程序設計課件

    JAVA語言與面向對象程序設計課件:第1章  Java和面向對象概述.ppt第2章  Java概述.ppt第3章&nbs
    發表于 12-06 13:52 ?44次下載

    Java對象的生命周期

    本章內容 4.1 對象的聲明與創建4.1.1 基本術語4.1.2 對象的聲明4.1.3 對象創建4.1.4 數組
    發表于 04-10 15:49 ?0次下載

    JAVA教程之存儲與讀取對象

    JAVA教程之存儲與讀取對象,很好的JAVA的資料,快來學習吧
    發表于 04-11 17:28 ?7次下載

    基于Java反射機制的Excel文件導出實現_楊敏煜

    基于Java反射機制的Excel文件導出實現_楊敏煜
    發表于 03-18 09:46 ?1次下載

    java如何創建對象的分析

    作為Java開發者,我們每天創建很多對象,但我們通常使用依賴管理系統,比如Spring去創建對象。然而這里有很多
    發表于 09-27 14:36 ?0次下載

    java反射實例解析

    Class類的構造方法是private,由JVM創建反射java語言的一個特性,它允程序在運行時(注意不是編譯的時候)來進行自我檢查并且對內部的成員進行操作。例如它允許一個java
    發表于 09-27 15:40 ?0次下載

    實例分析Java創建對象

    Java中有5種創建對象的方式,下面給出它們的例子還有它們的字節碼 Paste_Image.png 如果你運行了末尾的的程序,你會發現方法1,2,3用構造函數創建
    發表于 09-28 13:29 ?0次下載

    java學習——java中的反射學習筆記

    本文檔內容介紹了java學習java中的反射學習筆記,供參考
    發表于 03-13 14:19 ?0次下載

    Java反射機制到底是什么?有什么作用

    Java反射機制是 Java 語言的一個重要特性,它在服務器程序和中間件程序中得到了廣泛運用。在服務器端,往往需要根據客戶的請求,動態調用某一個對象的特定方法。此外,在 ORM 中間件
    的頭像 發表于 02-15 14:07 ?4912次閱讀

    Java實驗:類和對象的擴展

    Java實驗:類和對象的擴展
    發表于 07-08 15:36 ?20次下載
    <b class='flag-5'>Java</b>實驗:類和<b class='flag-5'>對象</b>的擴展

    詳解Java基礎知識點反射

    Java反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為
    的頭像 發表于 04-09 13:47 ?2033次閱讀
    詳解<b class='flag-5'>Java</b>基礎知識點<b class='flag-5'>反射</b>

    Java反射和new效率對比,差距有多大?

    Java中,一般我們創建一個對象可能會選擇new一下個實例。但是隨著我們技術的不斷提升,我們也學習到了,可以通過反射
    的頭像 發表于 12-22 14:50 ?1357次閱讀

    Java創建對象有哪些方式

    1 問題 作為Java開發者,經常創建很多對象,你是否知道Java創建對象有哪些方式呢?
    的頭像 發表于 02-24 10:29 ?1189次閱讀
    主站蜘蛛池模板: 亚洲色图偷窥自拍 | 在线观看三级网站 | 免费福利影院 | 久久久久综合中文字幕 | 五月香婷婷 | 久久婷婷国产一区二区三区 | 久久国产乱子伦精品免 | ww欧洲ww在线视频看 | 色网站综合 | 亚洲国产女人aaa毛片在线 | 狠狠躁夜夜躁人人爽天天3 狠狠躁夜夜躁人人爽天天段 | 国产全黄三级三级 | 六月婷婷激情综合 | 久久国产精品无码网站 | 欧美一级黄色录相 | www.伊人网| 欧美骚 | 最近在线视频免费观看2019 | 国产操女| 日本在线一级 | 鲁老汉精品视频在线观看 | 看黄免费在线 | 日本最色网站 | 羞羞影院男女午夜爽爽影视 | 欧美zoozzooz在线观看 | 又粗又长又大真舒服好爽漫画 | 影视精品网站入口 | 国产精品久久婷婷六月丁香 | 国产亚洲第一 | www.色99| 求av网址 | 日本极度另类网站 | 日韩一级一片 | 久久99热精品这里久久精品 | fc2 ppv sss级素人美女 | 在线免费看高清视频大全 | 天堂网www天堂在线网 | 夜夜五月天 | 无内丝袜透明在线播放 | 欧美性天天影视 | a4yy私人毛片在线 |