先设置一个反射对象;
package com.jtc;
import java.util.Objects;
public class perple {
private int age;
private String name;
public perple() {
}
public perple(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private String getName() {
return name;
}
private void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
perple perple = (perple) o;
return age == perple.age &&
Objects.equals(name, perple.name);
}
@Override
public int hashCode() {
return Objects.hash(age, name);
}
}
使用反射:
package com.jtc;
import java.lang.reflect.Method;
public class refe {
public static void main(String[] args) throws Exception {
/**
* 获取 TargetObject 类的 Class 对象并且创建 perple 类实例
*/
Class<?> targetClass = Class.forName("com.jtc.perple");
perple targetObject = (perple) targetClass.newInstance();
/**
* 获取 TargetObject 类中定义的所有方法
*/
Method[] methods = targetClass.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
/**
* 获取指定方法并调用
*/
Method publicMethod = targetClass.getDeclaredMethod("setAge",
int.class);
publicMethod.invoke(targetObject, 10);
Method publicMethod2 = targetClass.getDeclaredMethod("getAge");
System.out.println(publicMethod2.invoke(targetObject));
/**
* 调用 private 方法
*/
Method setName = targetClass.getDeclaredMethod("setName", String.class);
setName.setAccessible(true);
setName.invoke(targetObject,"fe");
Method getName = targetClass.getDeclaredMethod("getName");
getName.setAccessible(true);
System.out.println(getName.invoke(targetObject));
}
}
equals
hashCode
getName
setName
getAge
setAge
10
fe