package javase;
import java.lang.reflect.Method;
import java.util.ArrayList;
/**
* Created by Kimi Raikkonen on 2018-01-30.
*/
public class ReflectTest {
public static void main(String[] args) {
// c1.getDeclaredMethod();
try {
// 反射的使用方式
// 1.获取类的类类型
A a1 = new A();
Class c1 = a1.getClass();
// 也可以这样获取类类型
//Class c2 = A.class;
// 2.获取方法的反射
/*
根据方法名和参数列表确定到底调用哪一个方法
*/
Method method1 = c1.getMethod("print", new Class[]{String.class, String.class});
//3.通过反射调用方法
method1.invoke(a1, new Object[]{"hello", "WORLD"});
//也可以这样写
method1.invoke(a1, "hello", "WORLDLALA");
// method1.invoke(a1, "hello", 1);
// 下面是没有入参的情况
// Method method2 = c1.getMethod("print", new Class[0]);
// 或者
// Method method2 = c1.getMethod("print", new Class[]{});
// 或者
Method method2 = c1.getMethod("print");
// 调用
method2.invoke(a1);
method2.invoke(a1, new Object[0]);
method2.invoke(a1, new Object[]{});
// 有返回值的情况 用 Object 接收返回值
Method method4 = c1.getMethod("print", new Class[]{String.class});
Object returnString = method4.invoke(a1, new Object[]{"这是输入值"});
System.out.println(returnString);
} catch (Exception e) {
}
}
}
class A {
public String print(int a, int b) {
System.out.println(a+b);
return "sdfsdf";
}
public void print(String a, String b) {
System.out.println(a.toUpperCase()+" "+b);
}
public void print() {
System.out.println("啦啦啦德玛西亚");
}
public String print(String inputString) {
return inputString;
}
}
java 反射执行方法 无参数 java通过反射执行方法
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java反序列化-反射
java反序列化之-反射
java 反序列化 web安全