【发布时间】:2015-01-29 03:58:36
【问题描述】:
...因为看起来两者都返回相同的字符串 - 看看这个 Scala 代码:
scala> val f = new File("log.txt")
scala> f.getPath
// res6: String = log
scala> f.toString
// res7: String = log
【问题讨论】:
...因为看起来两者都返回相同的字符串 - 看看这个 Scala 代码:
scala> val f = new File("log.txt")
scala> f.getPath
// res6: String = log
scala> f.toString
// res7: String = log
【问题讨论】:
toString() 方法在所有 Java 类上定义。它用于调试目的,除非用户明确定义,否则不能依赖于向用户显示之外的任何其他内容。
实际上,版本之间的输出并没有真正改变,在许多情况下,您可以有理由相信它会是您想要的,但是,原则上,您应该避免toString() 的任何使用,而不是向用户打印内容。
这就是getPath() 存在的原因。 这个方法有一个定义明确的输出值,它也保证被采用String表示路径的方法接受。
因此,如果您要在内部使用该路径,请使用getPath()。如果您要打印它作为调试帮助,请使用toString()。
【讨论】:
它们是相同的。请参阅javadocs。直接引用链接:
getPath()
Converts this abstract pathname into a pathname string.
toString()
Returns the pathname string of this abstract pathname.
This is just the string returned by the getPath() method.
【讨论】:
区别在于您应该在哪种情况下使用其中一种。
getPath 方法将始终返回文件路径的字符串表示形式。因此,如果这是您想要的(将文件路径传递给另一个方法等),您应该调用该方法。
但是,如果您想将文件转换为文本演示文稿(可能用于记录),请使用toString 方法(see this question as well)。我之所以这么说是因为如果您使用toString 方法,而您应该使用getPath 方法,并且如果toString 实现发生变化(可能也显示文件大小),那么您的代码将会中断。
【讨论】:
java.io.File 类的 toString() 方法被覆盖为只调用 getPath(),因此它们将返回相同的结果。
读完这里的源码就很清楚了:toString()
【讨论】:
如果你看 java.io.file toString 函数实际上调用了路径的 getter。
public String toString() {
return getPath();
}
【讨论】: