一言で反射を理解する(自分で理解するためだけ)
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(" ");
}
}