首页 > 编程语言 > 详细

Java通过反射修改属性值,属性是引用对象

时间:2021-01-24 14:19:21      阅读:118      评论:0      收藏:0      [点我收藏+]
package com.example.demo.model;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

public class Dog {
    private Name dogName;

    public Name getName() {
        return dogName;
    }

    public void setName(Name name) {
        this.dogName = name;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "dogName=" + dogName +
                };
    }

    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        Dog dog = new Dog();
        Name name = new Name();
        name.setMiddleName("WW");
        dog.setName(name);
        Field dogName = dog.getClass().getDeclaredField("dogName");
        dogName.setAccessible(true);
        Object dogNameObj = dogName.get(dog);
        Field middleName = dogNameObj.getClass().getDeclaredField("middleName");
        middleName.setAccessible(true);
        middleName.set(dogNameObj,"kk");
        System.out.println(dog);
    }
}
package com.example.demo.model;

public class Name {
    private String middleName;

    public String getMiddleName() {
        return middleName;
    }

    public void setMiddleName(String middleName) {
        this.middleName = middleName;
    }

    @Override
    public String toString() {
        return "Name{" +
                "middleName=‘" + middleName + ‘\‘‘ +
                ‘}‘;
    }
}

 

Java通过反射修改属性值,属性是引用对象

原文:https://www.cnblogs.com/infiniteaaaaa/p/14320544.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!