java放射メカニズムの概要

4264 ワード

放射能とは、名前に該当するクラスや、種類の方法や属性をつけることで、開発中に人が何を書いているか分からないことを解決するために開発されたものです。
package com.io;
//                     
//          
class stu {
    private String stuname;
    private int age;
    public void addStu(String stuname){
        this.stuname=stuname;
        System.out.println(stuname);

    }
    public void showstu(){
        System.out.println(stuname);
    }
}
//名前で、対象のインスタンスを取得し、メソッドを呼び出します。
package com.reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class demo1 {
//       stu , com.io   
    public static void main(String[] args) {

        String classname ="com.reflectdemo.stu";
        try {
            Class call= Class.forName(classname);
            System.out.println(call.getName());
            Object obj = call.newInstance();
            Method methods[] = call.getMethods();
            Method method = call.getMethod("addStu",String.class);
            method.invoke(obj, "zhansan");
            } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

}