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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java反射技術(shù)實(shí)現(xiàn)對(duì)象的創(chuàng)建

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

一. 基礎(chǔ)概念

Java中,一般我們創(chuàng)建一個(gè)對(duì)象可能會(huì)選擇new一下個(gè)實(shí)例。但是隨著我們技術(shù)的不斷提升,我們也學(xué)習(xí)到了,可以通過反射技術(shù)實(shí)現(xiàn)對(duì)象的創(chuàng)建。

可是,你有沒有想一下,什么時(shí)候我們改用new創(chuàng)建對(duì)象,什么時(shí)候我們改用反射創(chuàng)建對(duì)象呢?

兩者創(chuàng)建對(duì)象的效率又是如何呢?

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

二. new 對(duì)象和反射創(chuàng)建對(duì)象的效率對(duì)比

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

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

最終我們發(fā)現(xiàn),new 100000000 個(gè)對(duì)象和反射創(chuàng)建 100000000 個(gè)對(duì)象,效率相差了很多倍。

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

首先第一點(diǎn),一般我們的Java代碼是需要編譯后在虛擬機(jī)里面運(yùn)行的。

我們一般都是通過一個(gè)前端編輯器,比如javac,把java文件轉(zhuǎn)為class文件。

接下來,程序運(yùn)行期間,可能會(huì)通過一個(gè)JIT,即時(shí)編譯器將字節(jié)碼文件轉(zhuǎn)換為計(jì)算機(jī)認(rèn)識(shí)的機(jī)器碼文件。

另外一種可能是通過一個(gè)AOT編譯器,直接把java文件編譯為本地機(jī)器碼文件。其中JIT在程序運(yùn)行期會(huì)對(duì)程序進(jìn)行優(yōu)化,但是反射是通過動(dòng)態(tài)解析的方式,因此可能無法執(zhí)行某些java虛擬機(jī)的優(yōu)化。

總結(jié)起來有下面幾個(gè)原因:

Method#invoke 方法會(huì)對(duì)參數(shù)做封裝和解封操作

需要檢查方法可見

需要校驗(yàn)參數(shù)

反射方法難以內(nèi)聯(lián)

JIT 無法優(yōu)化

三. 反射和new 的使用場(chǎng)景

反射的部分使用場(chǎng)景

Spring通過反射來幫我們實(shí)例化對(duì)象,并放入到Ioc容器中

使用JDBC鏈接數(shù)據(jù)庫(kù)時(shí)加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)Class.forName()

逆向代碼 例如反編譯

利用反射,在泛型為int的arryaList集合中存放一個(gè)String類型的對(duì)象

new 對(duì)象和反射的區(qū)別

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

new必須要知道類名,而反射創(chuàng)建對(duì)象不需要知道類型也可以創(chuàng)建

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2976

    瀏覽量

    105211
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    806

    瀏覽量

    31305
  • 反射技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    5992

原文標(biāo)題:Java反射和new效率對(duì)比,差距有多大?

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何用java映射創(chuàng)建java對(duì)象和調(diào)用java對(duì)象

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

    如何用java映射創(chuàng)建java對(duì)象和調(diào)用java對(duì)象的方法

    Method對(duì)象的invoke方法。好,現(xiàn)在上代碼:lolpackage com.bunchen.test;import java.lang.reflect.Constructor;import
    發(fā)表于 07-28 16:11

    JAVA語(yǔ)言與面向對(duì)象程序設(shè)計(jì)課件

    JAVA語(yǔ)言與面向對(duì)象程序設(shè)計(jì)課件:第1章  Java和面向對(duì)象概述.ppt第2章  Java概述.ppt第3章&nbs
    發(fā)表于 12-06 13:52 ?44次下載

    Java對(duì)象的生命周期

    本章內(nèi)容 4.1 對(duì)象的聲明與創(chuàng)建4.1.1 基本術(shù)語(yǔ)4.1.2 對(duì)象的聲明4.1.3 對(duì)象創(chuàng)建4.1.4 數(shù)組
    發(fā)表于 04-10 15:49 ?0次下載

    JAVA教程之存儲(chǔ)與讀取對(duì)象

    JAVA教程之存儲(chǔ)與讀取對(duì)象,很好的JAVA的資料,快來學(xué)習(xí)吧
    發(fā)表于 04-11 17:28 ?7次下載

    基于Java反射機(jī)制的Excel文件導(dǎo)出實(shí)現(xiàn)_楊敏煜

    基于Java反射機(jī)制的Excel文件導(dǎo)出實(shí)現(xiàn)_楊敏煜
    發(fā)表于 03-18 09:46 ?1次下載

    java如何創(chuàng)建對(duì)象的分析

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

    java反射實(shí)例解析

    Class類的構(gòu)造方法是private,由JVM創(chuàng)建反射java語(yǔ)言的一個(gè)特性,它允程序在運(yùn)行時(shí)(注意不是編譯的時(shí)候)來進(jìn)行自我檢查并且對(duì)內(nèi)部的成員進(jìn)行操作。例如它允許一個(gè)java
    發(fā)表于 09-27 15:40 ?0次下載

    實(shí)例分析Java創(chuàng)建對(duì)象

    Java中有5種創(chuàng)建對(duì)象的方式,下面給出它們的例子還有它們的字節(jié)碼 Paste_Image.png 如果你運(yùn)行了末尾的的程序,你會(huì)發(fā)現(xiàn)方法1,2,3用構(gòu)造函數(shù)創(chuàng)建
    發(fā)表于 09-28 13:29 ?0次下載

    java學(xué)習(xí)——java中的反射學(xué)習(xí)筆記

    本文檔內(nèi)容介紹了java學(xué)習(xí)java中的反射學(xué)習(xí)筆記,供參考
    發(fā)表于 03-13 14:19 ?0次下載

    Java反射機(jī)制到底是什么?有什么作用

    Java反射機(jī)制是 Java 語(yǔ)言的一個(gè)重要特性,它在服務(wù)器程序和中間件程序中得到了廣泛運(yùn)用。在服務(wù)器端,往往需要根據(jù)客戶的請(qǐng)求,動(dòng)態(tài)調(diào)用某一個(gè)對(duì)象的特定方法。此外,在 ORM 中間件
    的頭像 發(fā)表于 02-15 14:07 ?4841次閱讀

    Java實(shí)驗(yàn):類和對(duì)象的擴(kuò)展

    Java實(shí)驗(yàn):類和對(duì)象的擴(kuò)展
    發(fā)表于 07-08 15:36 ?20次下載
    <b class='flag-5'>Java</b>實(shí)驗(yàn):類和<b class='flag-5'>對(duì)象</b>的擴(kuò)展

    詳解Java基礎(chǔ)知識(shí)點(diǎn)反射

    Java反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為
    的頭像 發(fā)表于 04-09 13:47 ?1954次閱讀
    詳解<b class='flag-5'>Java</b>基礎(chǔ)知識(shí)點(diǎn)<b class='flag-5'>反射</b>

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

    Java中,一般我們創(chuàng)建一個(gè)對(duì)象可能會(huì)選擇new一下個(gè)實(shí)例。但是隨著我們技術(shù)的不斷提升,我們也學(xué)習(xí)到了,可以通過反射
    的頭像 發(fā)表于 12-22 14:50 ?1266次閱讀

    Java創(chuàng)建對(duì)象有哪些方式

    1 問題 作為Java開發(fā)者,經(jīng)常創(chuàng)建很多對(duì)象,你是否知道Java創(chuàng)建對(duì)象有哪些方式呢?
    的頭像 發(fā)表于 02-24 10:29 ?1100次閱讀
    主站蜘蛛池模板: 天堂在线bt | 欧美日韩你懂的 | 欧美影院| 亚洲香蕉久久一区二区三区四区 | 日韩综合色 | 日韩精品在线第一页 | 夜夜橹橹网站夜夜橹橹 | 亚洲色图在线播放 | 特黄视频 | 欧美黄色影院 | lsj老司机精品视频在线观看 | 香蕉久久精品 | 黄.www| 国产精品黄网站免费观看 | 国产精品www夜色影视 | 免费高清在线爱做视频 | 涩涩色中文综合亚洲 | 国产伦精一区二区三区 | 99久热成人精品视频 | 天堂网中文在线 | 欧美午夜网 | 日韩高清在线日韩大片观看网址 | 黄 色美 女人 | 性色xxx| 欧美一级视频免费看 | 好黄好硬好爽好刺激 | 天天艹综合 | 黑人性xx | 美女扒开内裤让男人桶 | 国产精品日本亚洲777 | 激情亚洲婷婷 | 午夜欧美福利 | 欧美特黄视频在线观看 | 亚洲综合日韩欧美一区二区三 | 国产va免费精品高清在线 | 亚洲综合色在线观看 | 簧片免费视频 | 天天躁日日躁狠狠躁一级毛片 | 99久久综合精品免费 | 欧美精品aaa久久久影院 | 国产一级特黄aa级特黄裸毛片 |