[java]反射機制給屬性使用set方法構造對象

測試代碼

package main;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class TestMain2 {

    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        System.out.println(createFromClass("bean.Bird"));
    }

    public static Object createFromClass(String classStr) throws Exception{
        Class<?> clazz = Class.forName(classStr);
        Object object = clazz.newInstance();
        Field[] fields = clazz.getDeclaredFields();
        for(Field field: fields){
            String name = field.getName();
            String methodStr = "set"+name.toUpperCase().substring(0, 1)+name.substring(1);
            Method method = clazz.getMethod(methodStr,new Class[]{field.getType()});
            if(field.getType().getSimpleName().equals("String")){
                method.invoke(object, "飛鳥");
            }else if(field.getType().getSimpleName().equals("Integer")){
                method.invoke(object, 30);
            }
        }
        return object;
    }

}

測試結果

這裏寫圖片描述

發佈了167 篇原創文章 · 獲贊 25 · 訪問量 60萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章