Java如何读取bean的嵌套属性值?

在这个示例中,您将看到如何读取 bean 的嵌套属性,我们将使用 PropertyUtils.getNestedProperty ()方法。为了进行测试,我们将为 bean 创建三个类: Track 和 Artist,并将 ReadNestedProperty 作为主程序运行。

Track类将包含的属性Artist对象。使用PropertyUtils.getNestedProperty()方法,我们想要获得演唱曲目的歌手姓名。此方法将首先从 track 对象读取 artist 属性,然后读取 artist 对象的 name 属性。

使用PropertyUtils.getNestedProperty()它读取嵌套属性可以无限读取嵌套级别。

package org.nhooo.example.commons.beanutils;

import org.apache.commons.beanutils.PropertyUtils;

public class ReadNestedProperty {
    public static void main(String[] args) {
        Track track = new Track();
        track.setId(1L);
        track.setTitle("All My Loving");
        track.setArtist(new Artist(1L, "Beatles"));

        try {
            String artistName = (String) PropertyUtils.getNestedProperty(track, "artist.name");
            System.out.println("Artist Name = " + artistName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
package org.nhooo.example.commons.beanutils;

public class Track {
    private Long id;
    private String title;
    private Integer duration;
    private Artist artist;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Integer getDuration() {
        return duration;
    }

    public void setDuration(Integer duration) {
        this.duration = duration;
    }

    public Artist getArtist() {
        return artist;
    }

    public void setArtist(Artist artist) {
        this.artist = artist;
    }

    @Override
    public String toString() {
        return "Track{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", duration=" + duration +
                '}';
    }
}
package org.nhooo.example.commons.beanutils;

public class Artist {
    private Long id;
    private String name;

    public Artist() {
    }

    public Artist(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

Maven依赖

<!-- https://search.maven.org/remotecontent?filepath=commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3.jar -->
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>