...因为它们似乎都返回相同的字符串 - 看看这个Scala代码:
scala> val f = new File("log.txt")
scala> f.getPath
// res6: String = log
scala> f.toString
// res7: String = log
答案 0 :(得分:3)
{em}所有 Java类都定义了toString()
方法。它用于调试目的,除非用户明确定义,否则不能依赖于显示给用户以外的任何内容。
在实践中,输出在版本之间并没有真正改变,在很多情况下,你可以合理地确信它会是你想要的,但是,原则上,你应该避免除了向用户打印外,还可以使用toString()
。
这就是getPath()
存在的原因。 此方法具有非常明确定义的输出值,通过采用表示路径的String
的方法,也可以保证接受。
因此,如果您要在内部使用该路径,请使用getPath()
。如果要将其作为调试辅助工具打印,请使用toString()
。
答案 1 :(得分:1)
他们是完全相同的。请参阅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.
答案 2 :(得分:1)
java.io.File类的toString()方法被覆盖,只调用getPath(),因此它们将返回相同的结果。
一旦您在此处阅读来源,就会非常清楚:toString()
答案 3 :(得分:0)
区别在于您应该使用哪种情况。
getPath
方法将始终返回文件路径的String表示形式。因此,如果这是你想要的(将文件路径传递给另一个方法等),你应该调用该方法。
但是如果你想将文件转换为文本表示(可能用于记录),请使用toString
方法(see this question as well)。我说这是因为如果您使用toString
方法,那么您应该使用getPath
方法,并且toString
实现更改(也可能显示文件大小)那么你的代码就会崩溃。
答案 4 :(得分:0)
如果你看一下java.io.file toString函数实际上调用了路径的getter。
public String toString() {
return getPath();
}