通過反射機制擷取Class,再執行個體化對象:
測試代碼:
package reflect;
public class Test02 {
public static void main(String[] args) {
// 不使用反射機制建立對象
User u1 = new User(1001);
System.out.println(u1); // User{id=1001}
// 使用反射機制建立對象
try {
// 擷取Class檔案
Class cUser = Class.forName("reflect.User");
// 使用new來完成對象的建立,它會調用對應類的無參數構造方法,你得先保證該類存在無參數構造方法
Object obj = cUser.newInstance(); // 這個方法沒有參數
System.out.println(obj); // User{id=0}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}
class User {
int id;
public User() {
}
public User(int id) {
this.id = id;
}
@Override
public String toString() {
return "User{" + "id=" + id + '}';
}
}