91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

什么是反射和字節碼對象。

發布時間:2020-07-18 16:36:07 來源:網絡 閱讀:798 作者:dylan的賬號 欄目:編程語言

1.什么是"反射"
它是Java中提供的一種“操作對象”的方式。在運行狀態下,通過class文件對象,去使用構造方法,成員變量,成員方法。 之前我們創建對象:
class Demo{
Student stu = new Student();
}
會使Demo類“依賴于”Student類--產生耦合
反射使用另一種方式操作對象,就可以解決這種依賴關系;
 方法有三種:
  1.類名.class
  2.對象.getclass()
  3.class.forName("包名.類名")
  好處:
  只要有一個類或者一個類的對象,就可以得到這個類或對象的所有屬性和方法,包括私有的
  同步方法
  反射成員方法:
  1.獲取字節碼文件
  Class c = Class.forName("包名.類名");
  2.反射方法
  Method m = c.getMethod("反射的方法",方法的參數類型.class);
  3.用方法,m.invoke(對象,參數) 對象,c.newInstance ,在A建立對象。
  m.invoke(c.newInstance(),參數);
  類加載器與反射有什么關系
  反射是通過字節碼文件對象,將類的字段,方法,構造器等映射成相應的類,并進行各自的操作;
  類加載器是通過某個類的.classLoader()方法,將該類的.class文件從硬盤中加載到java虛擬機中,形成字節碼文件;
2.什么是“字節碼對象“
每個類被加載之后,系統就會為該類生成一個對應的字節碼對象,通過該字節碼對象就可以訪問到JVM中的對應的類。
獲取字節碼對象的三種方式
1.使用類的.class屬性

Class<類類型> clz1 = 類名.class;
1
2.通過Class類中的靜態方法forName(String className),傳入類的全限定名(必須添加完整包名)比較常用

Class<?> clz2 = Class.forName("java.util.Date");
1
3.通過對象的getClass方法來實現,其中,getClass()是Object類中的方法,所有的對象都可以調用該方法

Date str = new Date();
Class<?> clz3 = str.getClass();

Class clazz = this.getClass();//獲取字節碼對象
Method method = clazz.getMthod("方法名",req.class,resp.class);//反射方法的字節碼對象
注意:同一個類在JVM中只存在一份字節碼對象,也就說上述,claz1 == clz2 == clz3;

向AI問一下細節

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

AI

阿拉善左旗| 虎林市| 綦江县| 合肥市| 抚顺市| 卢湾区| 乌兰县| 稻城县| 云霄县| 遂川县| 宝应县| 彝良县| 平乐县| 延寿县| 朝阳区| 三台县| 太湖县| 兴文县| 开远市| 平原县| 涟源市| 平武县| 旬邑县| 岳普湖县| 城步| 略阳县| 九寨沟县| 密山市| 西盟| 蒙山县| 仪征市| 铜陵市| 全州县| 固镇县| 渝中区| 股票| 柏乡县| 高碑店市| 聂拉木县| 巨野县| 灵山县|