成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

java的invoke詳解 Java反射到底慢在哪里?

Java反射到底慢在哪里?先陳述一下結(jié)論:java的反射是慢,但是是相對(duì)于直接調(diào)用而言,慢也的確慢了一個(gè)數(shù)量級(jí),不過在有些場(chǎng)景必須使用反射,并且在反射的時(shí)候,可以用一些手段進(jìn)行人工優(yōu)化再說一下java

Java反射到底慢在哪里?

先陳述一下結(jié)論:java的反射是慢,但是是相對(duì)于直接調(diào)用而言,慢也的確慢了一個(gè)數(shù)量級(jí),不過在有些場(chǎng)景必須使用反射,并且在反射的時(shí)候,可以用一些手段進(jìn)行人工優(yōu)化

再說一下java反射之所以有一點(diǎn)慢的原因

和python比起來,java是靜態(tài)語言類型,也就是說在編譯期java在編譯代碼的時(shí)候就會(huì)進(jìn)行類型的強(qiáng)檢驗(yàn),java會(huì)在編譯期進(jìn)行代碼優(yōu)化,而反射是在運(yùn)行時(shí)發(fā)生的,也就是說那些類型檢查,代碼優(yōu)化的事情放在了運(yùn)行時(shí),這個(gè)自然要耗費(fèi)一點(diǎn)時(shí)間

2.編譯期在運(yùn)行時(shí)很難做一些關(guān)于反射的優(yōu)化,現(xiàn)在的編譯期還不是非常智能,知道你用這段反射代碼需要做什么事情

3.再說一下,調(diào)用實(shí)現(xiàn)過程,在反射調(diào)用過程中,執(zhí)行者叫MethodAccessor,我記得這個(gè)對(duì)象是懶加載的,也就是說有可能第一次反射調(diào)用耗時(shí)可能會(huì)更長一點(diǎn),并且在調(diào)用的時(shí)候方法還要對(duì)參數(shù)數(shù)組進(jìn)行包裝,可能涉及到參數(shù)類型適配,裝包拆包也有消耗,其實(shí)說到底,還是不知道具體的參數(shù)類型

java中的invoke方法?

invoke(調(diào)用)就是調(diào)用Method類代表的方法。可以實(shí)現(xiàn)動(dòng)態(tài)調(diào)用,例如可以動(dòng)態(tài)的傳人參數(shù),可以把方法參數(shù)化。

可以把方法參數(shù)化invoke(class, method),比如Test類里有一系列名字相似的方法setValue1、setValue2等等,可以把方法名存進(jìn)數(shù)組v[],然后循環(huán)里invoke(test,v[i]),就順序調(diào)用了全部setValue。