//Person類
package com.ccl.reflect;
public class Person {
private String name;
int age;
public String address;
public Person(){}
private Person(String name){
this.name = name;
}
Person(String name,int age){
this.name = name;
this.age = age;
}
public Person(String name, int age, String address){
this.name = name;
this.age = age;
this.address = address;
}
public void show(){
System.out.println("show");
}
public void method(String s){
System.out.println("method" + s);
}
public String getString(String s, int i){
return s + "---" + i;
}
private void function(){
System.out.println("function");
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
package com.ccl.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
//通過反射去獲取該構造方法並使用
//public Person(String name, int age, String address)
public class ReflectDemo_2 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//獲取字節碼文件對象
Class c = Class.forName("com.ccl.reflect.Person");
//獲取帶參構造方法對象 public Constructor<T> getConstructor(Class<?>... parameterType)
Constructor con = c.getConstructor(String.class, int.class, String.class);
//通過帶參構造方法對象創建對象
Object obj = con.newInstance("咋了", 34, "深圳");
System.out.println(obj);
//結果 : Person [name=咋了, age=34, address=深圳]
}
}