一、编写一个类
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.toLowerCase());
}
}
二、方法反射的实现步骤
public static void main(String[] args) {
// 获取print(int, int)方法
// 1.获取类的类类型
A a = new A();
Class c = a.getClass();
// 2.获取类的方法,名称和参数列表来决定
try {
// 获取的是public的方法
Method method = c.getMethod("print", int.class, int.class);
Method method2 = c.getMethod("print", String.class, String.class);
//Method method = c.getMethod("print", new Class[]{int.class, int.class});
// 获取自己的声明的方法
// Method method = c.getDeclaredMethod("print", new Class[]{int.class, int.class});
// 3.方法的反射操作
// 方法的反射操作是指使用method对象进行方法的调用,而不是a.print(10,1);
// 当方法没有返回值,则返回null
a.print(10,1);
Object o = method.invoke(a, 10, 1);
method2.invoke(a, "hello", "world!");
//method.invoke(a, new Object[]{10, 1});
} catch (Exception e) {
e.printStackTrace();
}
}
}
大家可以通过注释详细的了解实现步骤,从下面的输出结果可以看到反射方法的调用与原对象实例调用方法的效果是一致的。
11
11
HELLO, world!
网友评论