一言で反射を理解する(自分で理解するためだけ)

1558 ワード

例えばa,b,cの3つのオブジェクトはprint()メソッドを呼び出すが、通常は各オブジェクトを作成し、a.print()b.print()c.print()を使用するが、反射を使用するとprint()メソッドのオブジェクトになる.invoke(a,パラメータリスト)どのオブジェクトを使いたいかはどのオブジェクトを使いますか
例:

import java.lang.reflect.Method;

public class MethodDemo {
    public static void main(String[] args) {
    	
        //    print(int,int)
        //1.                   ---》        
        A a1 = new A();
        Class c = a1.getClass();
        //2.    ---》          
        try {
            //Method m = c.getMethod("print",new Class[]{int.class,int.class})
              Method m = c.getMethod("print",int.class,int.class);
            //         m          
            //  a1.print(10,20);      
            //   -- print         a1
            //            null,          
            //m.invoke(a1,new Object[]{10,20});
            m.invoke(a1,10,20);//       

            //     
            Method m1 = c.getMethod("print",String.class,String.class);
            m1.invoke(a1,"hello","world");

            //       
            Method m2 = c.getMethod("print");
            m2.invoke(a1);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}


    class A{
        public void print(int a,int b){
            System.out.println(a+b);
        }
        public void print(String a,String b){
            System.out.println(a.toUpperCase()+b.toUpperCase());
        }
        public void print(){
            System.out.println("    ");
        }
    }