使用反射调用某个类的成员方法

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);
	}
}

  

猜你喜欢

转载自www.cnblogs.com/xingsir/p/12667153.html