色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取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
    +關注

    關注

    19

    文章

    2972

    瀏覽量

    104865
  • 編輯器
    +關注

    關注

    1

    文章

    806

    瀏覽量

    31210
  • 反射技術
    +關注

    關注

    0

    文章

    5

    瀏覽量

    5984

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

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

收藏 0人收藏

    評論

    相關推薦

    如何用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 ?4817次閱讀

    Java實驗:類和對象的擴展

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

    詳解Java基礎知識點反射

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

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

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

    Java創建對象有哪些方式

    1 問題 作為Java開發者,經常創建很多對象,你是否知道Java創建對象有哪些方式呢?
    的頭像 發表于 02-24 10:29 ?1065次閱讀
    主站蜘蛛池模板: 亚洲欧美高清在线| 成 人 网 站免费观看| 国产乱人偷精品视频A人人澡| 推倒美女总裁啪啪| 国色天香社区视频免费高清3 | WWW亚洲精品久久久乳| 欧美性xxx免费看片| 国产精片久久久久久婷婷| 亚洲欧美偷拍视频一区| 蜜臀AV色欲A片无码一区| 俄罗斯美幼| 一个人的HD高清在线观看| 欧美 亚洲综合在线一区| 国产欧美二区综合| 69成人免费视频| 偷拍 拍自 欧美色区| 狂躁美女BBBBBB视频| 嘟嘟嘟WWW免费高清在线中文| 亚洲一区综合图区| 欧美一区二区三区不卡免费| 果冻传媒色AV国产播放| ai换脸女明星被躁在线观看免费| 小处雏一区二区三区| 男女生爽爽爽视频免费观看| 国产午夜一级鲁丝片| np高h肉辣一女多男| 亚洲三级视频在线观看| 日日干夜夜艹| 蜜桃传媒在线观看入口| 国产在线一卡二卡| 潮 喷女王cytherea| 中国xxxxx69| 午夜影院一区二区三区| 欧美精品熟妇乱| 久久99视频免费| 国产久爱青草视频在线观看| jlzz中国jizz日本老师水多| 一本道亚洲区免费观看| 新香蕉少妇视频网站| 色色噜一噜| 青柠高清在线观看完整版|

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品