使用反射调用某个类的成员方法
1.创建一个Person类,写几个方法
package seday18c; /** * @author xingsir * 创建一个Person类,写几个方法 */ public class Person { public void eat() { System.out.println("我在吃"); } public void run() { System.out.println("我在跑"); } public void eat(String name) { System.out.println("我是"+name+",我在吃"); } public void eat(String name,int count) { System.out.println("我是"+name+",我在吃"+count+"只牛蛙"); } }
2.创建使用反射调用某个类的成员方法
package seday18c; import java.lang.reflect.Method; import java.util.Scanner; /** * @author xingsir * 使用反射调用某个类的成员方法 */ public class ReflectDemo3 { public static void main(String[] args) throws Exception { // Person p = new Person(); // p.sayHello(); Scanner scanner = new Scanner(System.in);//控制台输入 System.out.println("请输入要实例化的类:");//例如输入:seday18c.Person String className = scanner.nextLine(); //利用反射 Class cls = Class.forName(className); /* * Class提供了实例化对象的方法:Object newInstance() * 这个方法要求Class表示的类必须由无参构造方法,否则会抛出异常。 * 若当前类没有无参构造方法,我们需要先通过类对象获取其定义的某种构造方法,然后通过构造方法对象来进行实例化。 */ Object o = cls.newInstance(); System.out.println("请输入要调用的方法名:"); String methodName = scanner.nextLine(); //先通过类对象获取要调用的方法 Method method=cls.getMethod(methodName); //调用指定对象的方法 method.invoke(o); } }