只是想知道是否有任何理由toString()明确地调用对象来打印它?
MyClass obj = new MyClass(); // Assume toString() method is overriden in this class
System.out.println(obj);
System.out.println(obj.toString());
Run Code Online (Sandbox Code Playgroud)
我显然使用第一种方法,但我的一位同事争辩说我应该放弃它obj.toString()!我觉得toString()只是多余而不使用它实际上减少了机会NPE!
我错过了什么或者有没有理由toString()明确使用?
System.out是一个实例PrintStream.如果你打电话,println()你将调用此代码:
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
Run Code Online (Sandbox Code Playgroud)
所以它只是转换为一个String,尽管使用String.valueOf.不同之处在于,如果不是,那String.valueOf(null)就是"null"调用toString()对象null.但调用toString()上null引起NullPointerException了肯定.
所以,使用前者.它更简单和处理null.
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |