什么是打印对象的toString()值的更好方法?

问题描述 投票:-2回答:2

[当前,我正在使用以下代码来打印对象的字符串值,这是为了避免由于使用toString()方法而导致NullPointerException。但是,代码正在打印我,看来是对象的内存位置的Java表示。

代码:String.valueOf(request)

输出:io.restassured.internal.RequestSpecificationImpl@6ef1a1b9

这是问题的细分:

  1. 如何避免上述NullPointerException和输出而又安全地使用对象的字符串值?
  2. 以上代码中的结果输出确切地调用并引用了什么?
  3. 获取请求/响应正文的正确方法是什么?
java rest-assured
2个回答
0
投票

我更喜欢使用这个。

@Override
public String toString() {
    final StringBuilder sb = new StringBuilder("RequestSpecificationImpl{");
    sb.append("a='").append(a).append('\'');
    sb.append(", b='").append(b).append('\'');
    sb.append(", c='").append(c).append('\'');
    sb.append('}');
    return sb.toString();
}

-1
投票

上面的结果输出是调用哈希值。不同的类可能具有不同的实现。它什么也没说,只是让HashMap,HashSet等工具类快速区分它是哪个实例的一种快速方法。它也不是唯一的。每当您覆盖equal方法时,都应覆盖toString方法。

最后,您可以使用此库:lombok(非常流行),它将创建set / get / toString / constructors自动方法。https://projectlombok.org/

© www.soinside.com 2019 - 2024. All rights reserved.