1.定义父类的属性和方法
//父类
public class Parent {
public String publicField = "1";
String defaultField = "2";
protected String protectedField = "3";
private String privateField = "4";
public void publicMethod(){
System.out.println("publicMethod...");
}
void defaultMethod(){
System.out.println("defaultMethod...");
}
protected void protectedMethod(){
System.out.println("protectedMethod...");
}
private void privateMethod(){
System.out.println("privateMethod...");
}
}
//子类
public class Son extends Parent{
}
2.定义反射工具类操作父类的属性和方法
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* 方法类
*/
public class ReflectionUtils {
/**
* 循环向上转型
* @param object 子类对象
* @param methodName 父类中的方法名
* @param parameterTypes 父类中的方法参数类型
* @return 父类中的方法对象
*/
public static Method getDeclaredMethod(Object object, String methodName, Class<?>... parameterTypes){
Method method = null;
for(Class<?> clazz = object.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()){
try {
method = clazz.getDeclaredMethod(methodName, parameterTypes);
return method;
} catch (NoSuchMethodException e) {
//不需要处理
//不断向父类查询是否有某个方法
}
}
return null;
}
/**
* 直接调用对象方法,而忽略修饰符(private, protected, default)
* @param object 子类对象
* @param methodName 父类的方法名
* @param parameterType