package test;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Solution475 {
private String value;
public Solution475() {
value = "zhangsan";
}
public void publicMethod(String s) {
System.out.println("I love " + s);
}
public void privateMethod() {
System.out.println("value is " + value);
}
}
class M {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
/*获取Solution475类的class对象并创建类的实例*/
//Solution475 solution475 = new Solution475();
//Class<? extends Solution475> solution475Class = solution475.getClass();
Class<?> solution475Class = Class.forName("test.Solution475");
Solution475 solution475 = (Solution475) solution475Class.newInstance();
/*获取类中的所有定义的方法*/
Method[] methods = solution475Class.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method);
}
/*获取指定的方法并进行调用*/
Method publicMethod = solution475Class.getMethod("publicMethod", String.class);
publicMethod.invoke(solution475, "World"); //传入一个实例,方法执行需要的参数
/*获取指定的参数并对参数进行修改*/
Field field = solution475Class.getDeclaredField("value");
//为了对类中的参数进行修改我们取消安全检查
field.setAccessible(true);
/*对实例中的参数进行修改*/
field.set(solution475, "java后端开发");
/*调用private方法*/
Method privateMethod = solution475Class.getDeclaredMethod("privateMethod");
//为了调用private方法我们取消安全检查
privateMethod.setAccessible(true);
privateMethod.invoke(solution475);
}
}
使用java反射机制常见api
最新推荐文章于 2022-04-13 09:58:24 发布