3、獲取Class物件的三種方式
阿新 • • 發佈:2018-11-30
3、獲取Class物件的三種方式
要想對位元組碼檔案進行解刨,必須要有位元組碼檔案物件
- Object類中的getClass方法
- 通過物件靜態屬性 .class來獲取對應的Class物件
- 只要通過給定類的字串名稱就可以獲取該類,更為拓展
3.1 方式一:Object類中的getClass()方法
3.1.1 建立Person類
必須要明確具體的類,並且要建立物件,麻煩。
package com.hw.bean; /** * @Description * @Author Administrator * @Date 2018/11/29 */ public class Person { private String name; private int age; public void show() { System.out.println(name + "... show run ..." + age); } private void privateMethod() { System.out.println("privateMethod run..."); } public void paramMethod(String str, int num) { System.out.println("paramMethod run..." + str + ": " + num); } public static void staticMethod() { System.out.println("staticMethod run ... "); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person() { super(); System.out.println("person run ..."); } public Person(String name, int age) { this.name = name; this.age = age; System.out.println("person param run ... name=" + name); } }
3.1.2 測試用例
/** * 獲取Class物件的三種方式 * 1.Object類中的getClass()方法,必須要明確具體的類,並且要建立物件,麻煩。 */ @Test public void getClassObject_1() { Person person = new Person(); Class clazz = person.getClass(); Person person1 = new Person(); Class clazz1 = person1.getClass(); System.out.println(clazz == clazz1); }
執行:
3.2 方式二:通過物件靜態屬性 .class來獲取對應的Class物件
相對簡單,但是還是需要先明確類中的靜態成員。不夠拓展。
/**
* 通過物件靜態屬性 .class來獲取對應的Class物件
*/
public void getClassObject_2() {
Class clazz = Person.class;
}
3.3 方式三:只要通過給定類的字串名稱就可以獲取該類,更為拓展,forName
/** * 方式三:只要通過給定類的字串名稱就可以獲取該類,更為拓展,forName */ @Test public void getClassObject_3() throws ClassNotFoundException { String className = "com.hw.bean.Person"; Class clazz = Class.forName(className); System.out.println(clazz); }
執行: