package com.mldn.demo;
import java.lang.reflect.Method;
/*
* 利用反射调用具体的方法
* */
public class Demo02 {
public static void main(String[] args) throws Exception {
//1.获得指定的class对象
Class<?> cls = Class.forName("com.mldn.demo.Person");
String value="jiangyi";
//2实例化对象;任何情况下如果需要保存类中的属性或者调用类中的方法都必须保证存在真实的实例化对象,既然不允许导入包,那么久利用反射来实例化;
Object obj= cls.getDeclaredConstructor().newInstance();
//3,如果要进行方法的调用,则一定要调用方法的名称
String setMethodName="setName";
Method setMethod = cls.getDeclaredMethod(setMethodName, String.class);//获取指定的方法
setMethod.invoke(obj, value);//等价于:person对象.setName(value);
String getMethodName = "getName";
Method getMethod = cls.getDeclaredMethod(getMethodName);
Object invoke = getMethod.invoke(obj);
System.out.println(invoke);
}
}
具体的过程:
1获得指定的对象
2实例化该对象
3获得指定的方法
4利用invoke方法来调用指定的方法