激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - java 中如何獲取字節碼文件的相關內容

java 中如何獲取字節碼文件的相關內容

2020-09-07 08:59Java之家 Java教程

這篇文章主要介紹了java 中如何獲取字節碼文件的相關內容的相關資料,需要的朋友可以參考下

java 中如何獲取字節碼文件的相關內容

反射機制是指在運行狀態中,對任意一個類(class文件),都能知道這個類的所有屬性和方法;對任意一個對象,都能調用這個對象的方法和屬性。這種動態的獲取信息和動態的調用對象的方法的功能稱為——Java語言的反射機制。

簡單點說,動態的獲取類中的信息,這就是Java的反射機制。

在Java的反射機制中,我們可以通過配置文件信息,然后通過類名來獲取類中包含的詳細信息,如構造函數、成員變量和成員函數等。在接下來,作者將分別演示如何通過類名來獲取類中包含的信息。

一、獲取字節碼文件的構造函數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.lang.reflect.Constructor;
 
public class GetClassConstructor {
  public static void main(String[] args) throws Exception {
    createNewObject_2();
  }
 
  public static void createNewObject_2() throws Exception {
    /**
     * 當獲取指定名稱對應類中的所體現的對象時,而且該對象的初始化不適用空參的構造函數
     * 可以先通過該類的字節碼文件對象,獲取空參的構造函數
     * 該方法為:getConstructor(parameterTypes)
     */
 
  // 包名一定要寫全,否則會報"java.lang.ClassNotFoundException"異常
  String name = "src.Person";
    // 找尋該名稱類文件,并加進內存,產生Class對象
    Class clazz = Class.forName(name);
    // 獲取指定的構造函數對象
    Constructor constructor = clazz.getConstructor(String.class, int.class);
    // 通過該構造器對象的newInstance進行對象的初始化
    constructor.newInstance("小明", 12);
  }
 
  public static void createNewObject() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
    String name = "src.Person";
    // 找尋該名稱類文件,并加進內存,產生Class對象
    Class clazz = Class.forName(name);
    // 產生該類的實例對象(空參)
    Object obj = clazz.newInstance();
  }
}

二、獲取字節碼文件的成員變量

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.lang.reflect.Field;
 
public class GetClassField {
  public static void main(String[] args) throws Exception {
    getField();
  }
 
  /**
   * 獲取字節碼文件中的成員變量
   */
  public static void getField() throws Exception {
    Class clazz = Class.forName("src.Person");
    Field field = null;
 
    // 獲取本類字段,包含私有
    field = clazz.getDeclaredField("age");
 
    // 對私有字段的訪問取消權限檢查,可稱之為暴力訪問
    field.setAccessible(true);
 
    Object obj = clazz.newInstance();
 
    field.set(obj, Integer.valueOf(89));
 
    Object o = field.get(obj);
    System.out.println(o);
  }
}

三、獲取字節碼文件的成員函數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
 
public class GetClassMethod {
  public static void main(String[] args) throws Exception {
    getMethod_3();
  }
 
  public static void getMethod_3() throws Exception {
    Class clazz = Class.forName("src.Person");
    Method method = clazz.getMethod("walkInfo", new Class[]{String.class, Integer.TYPE});
    Object obj = clazz.newInstance();
    method.invoke(obj, new Object[]{"小強", Integer.valueOf(20)});
  }
 
  public static void getMethod_2() throws Exception {
    Class clazz = Class.forName("src.Person");
 
    // 獲取空參數的方法
    Method method = clazz.getMethod("show", (Class[]) null);
    Constructor constructor = clazz.getConstructor(new Class[]{String.class, Integer.TYPE});
    Object obj = constructor.newInstance(new Object[]{"小明", Integer.valueOf(12)});
    method.invoke(obj, (Object[]) null);
  }
 
  /**
   * 獲取指定Class中的公有函數
   */
  public static void getMethod() throws Exception {
    Class clazz = Class.forName("src.Person");
 
    // 獲取的都是類中的公有方法
    Method[] methods = clazz.getMethods();
 
    // 獲取本類中的所有方法
    methods = clazz.getDeclaredMethods();
    Method[] var5 = methods;
    int var4 = methods.length;
 
    for (int var3 = 0; var3 < var4; ++var3) {
      Method method = var5[var3];
      System.out.println(method);
    }
  }
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/qq_35246620/article/details/53584524

延伸 · 閱讀

精彩推薦
445
主站蜘蛛池模板: 日本网站在线看 | www.91视频com | 成人三级电影网 | 一级片999 | 欧美特一级片 | 美国黄色毛片女人性生活片 | 精品一区二区三区在线视频 | 欧美成年性h版影视中文字幕 | 91成| www.精品在线| 羞羞视频2023| 国产一级毛片国语版 | 羞羞视频免费网站含羞草 | av在线影片 | 国产精品99久久久久久久女警 | 毛片在线免费观看完整版 | 久久日本 | 亚洲免费观看视频 | 国产在线一区二区三区 | 麻豆蜜桃在线观看 | 亚洲一级电影在线观看 | xxxxxx免费 | 国产成人高潮免费观看精品 | 蜜桃视频在线播放 | 草莓福利视频在线观看 | 黄色大片网站在线观看 | 久草在线视频在线 | 久久久噜噜噜久久熟有声小说 | 免费国产在线视频 | www.91sese| 国产精品91在线 | 香蕉视频破解 | 久综合| 大片毛片 | 成人爱爱电影 | 成人在线视频国产 | 国产精品亚洲一区二区三区久久 | 青青久在线视频 | 亚洲一区二区在线 | 欧美日韩在线中文字幕 | 色欧美视频 |