反射獲取構造方法並使用

//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=深圳]
    }
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章