62,621
社区成员
发帖
与我相关
我的任务
分享class Person{
private int age;
private String name;
public Person(){
}
public Person(int age, String name){
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class SuperMan extends Person implements ActionInterface
{
private boolean BlueBriefs;
public static void fly()
{
System.out.println("超人会飞耶~~");
}
public boolean isBlueBriefs() {
return BlueBriefs;
}
public void setBlueBriefs(boolean blueBriefs) {
BlueBriefs = blueBriefs;
}
@Override
public void walk(int m) {
// TODO Auto-generated method stub
System.out.println("超人会走耶~~走了" + m + "米就走不动了!");
}
}
interface ActionInterface{
public static int nonono = 1;
public void walk(int m);
} public static void main(String[] args) throws Exception {
Class<?> clazz = null;
clazz = Class.forName("bianchengzhimei.SuperMan");
Object p1 = clazz.newInstance();
Field personNameField = clazz.getDeclaredField("name");
personNameField.setAccessible(true);
personNameField.set(p1, "darlingFish");
System.out.println(personNameField.get(p1)); public static void main(String[] args) throws Exception {
Class<?> clazz = null;
clazz = Class.forName("bianchengzhimei.SuperMan");
Object p1 = clazz.newInstance();
Field personNameField = null;
for(;clazz != Object.class;clazz= clazz.getSuperclass()){
try {
personNameField = clazz.getDeclaredField("name");
} catch (Exception e) {}
}
personNameField.setAccessible(true);
personNameField.set(p1, "darlingFish");
System.out.println(personNameField.get(p1));
}SuperMan superMan = new SuperMan(10, "LL");
try {
//Field field = person.getClass().getDeclaredField("name");
Field field = superMan.getClass().getSuperclass().getDeclaredField("name");
field.setAccessible(true);
field.set(superMan, "ERWA");
System.out.println(superMan.getName());
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
可以取到自己,再取个父类不就 OK?
Class<?> clazz = null;
clazz = Class.forName("bianchengzhimei.SuperMan");
//使用符合JavaBean规范的属性访问器
PropertyDescriptor pd = new PropertyDescriptor("name", clazz);
//调用setter
Method writeMethod = pd.getWriteMethod(); //setName()
writeMethod.invoke(obj, "test");
//调用getter
Method readMethod = pd.getReadMethod(); //getName()
readMethod.invoke(obj);
Person person = new Person(10, "LL");
try {
Field field = person.getClass().getDeclaredField("name");
field.setAccessible(true);
field.set(person, "ERWA");
System.out.println(person.getName());
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
要什么就反射取吧