反射的部分

    public static void main(String[] args) {            
        try {
            Class clazz = Class.forName(Student.class.getName());
//          獲取無參構(gòu)造方法對象
            Constructor constructor  = clazz.getDeclaredConstructor();
            constructor.setAccessible(true);
//         通過無參構(gòu)造方法對象創(chuàng)建對象
            Object obj = constructor.newInstance();
            System.out.println(obj);
//          通過反射給所有成員變量賦值
//          System.out.println("****通過反射給所有成員變量賦值****");
//          // private String name;
            Field nameField = clazz.getDeclaredField("name");
            nameField.setAccessible(true);
            nameField.set(obj, "風清楊");
            System.out.println(obj);
//          // int age;
            Field ageField = clazz.getDeclaredField("age");
            ageField.setAccessible(true);
            ageField.set(obj, 27);
            System.out.println(obj);


//          通過反射給所有構(gòu)造方法賦值
            Constructor constructor2 = clazz.getDeclaredConstructor(String.class,int.class);
            constructor2.setAccessible(true);
            Object obj1 = constructor2.newInstance("張三豐",28);
            System.out.println(obj1);
            
            //反射調(diào)用方法
            Method method1 = clazz.getDeclaredMethod("getValue",String.class);
            method1.setAccessible(true);
            method1.invoke(obj, "uabhj");
            
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (SecurityException e) {             
                e.printStackTrace();
            } catch (ClassNotFoundException e) {                
                e.printStackTrace();
            } catch (InstantiationException e) {                
                e.printStackTrace();
            } catch (IllegalAccessException e) {                
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
    }

public class Student {
    
    private String name;
    
    public int age;
    
    private Student() {}
    
    private Student(String name,int age) {
        this.name = name;
        this.age = age;
    }
    
    private void getValue(String a) {
        System.out.println(a);
        System.out.println(name+"\t"+age);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容