java - 如何在不使用 getter 的情况下打印 Java 对象的内容

标签 java

实际上,我正在实现一个程序,其中我从数据库检索信息,并使用 setter 将该信息设置为一个对象,我只想打印该对象参数而不使用 system.out.println(object.getHeadCount());

我只是想要就像我给予 system.out.println(object);因此使用此代码应该以 Json 格式或任何其他可读格式打印数据。

怎么做。因为我的对象包含 30 个字段,所以编写 30 个 getter 来打印数据非常忙碌。

最佳答案

您必须重写toString()

正常方式

class User {
    private String firstName;
    private String lastName;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString(){
        return this.firstName + " " + this.lastName;
    }
}

使用Apache Commons

class User {
    private String firstName;
    private String lastName;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString(){
        return new ToStringBuilder(this)
            .append("firstName", firstName)
            .append("lastName", lastName)
            .toString();
    }
}

使用Google Guava

class User {
    private String firstName;
    private String lastName;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString(){
        return MoreObjects.toStringHelper(this)
            .add("firstName", firstName)
            .add("lastName", lastName)
            .toString();
    }
}

关于java - 如何在不使用 getter 的情况下打印 Java 对象的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950211/

相关文章:

java - groovy 中的类加载问题

java - 如何从firebase实时数据库获取数据

java - 如何在onPostExecute中创建一个方法?

java - 在 JFreeChart XYPLot 中改变单点的形状

java - 按钮在Click中不起作用

java - Selenium Facebook 安全检查的验证码不可见

java - 如何使用 Ensime 扩展在 Visual Studio Code 上获取 Scala?

java - 从注释处理器应用 CGLib 代理

java - 如何将 css 样式设置为 GWT TextBox 文本?

java - 响应式(Reactive)应用程序中的 Spring Cache