getRichStringCellValue()。getString()和getRichStringCellValue()。toString()之间的区别是什么?

我目前正在使用Apache POI处理MS Excel文件,而且我发现了一些对我来说很奇怪的东西。 HSSFCell类有一个名为getRichStringCellValue()的方法,它返回一个HSSFRichTextString对象。 为了将其转换为普通string,我们使用getString() 。 看起来像这样:

 cell.getRichStringCellValue().getString() 

现在我想知道的是,为什么有一个getString()在第一个地方,当toString()基本上是相同的东西,即返回string等效? 有谁知道为什么?

toString()的合约 :

 toString method returns a string that "textually represents" this object 

toString()的一般用途是提供一个可读的对象表示。 有些类会更进一步,并指定toString()的详细格式,这通常是不可取的,如果是这样,那么只适用于“值对象”(date,时间,数字)。

除非在类的javadoc中指定,否则不应该依赖toString()返回的文本的特定格式。

一般的build议是:如果你的类想要引入一个特定的持久性文本表示,它应该由一个单独的方法提供。 因此,如果稍后toString()的实现发生更改,则永远不会感到惊讶。

两种方法的底层实现是相同的:

 return _string.toString(); 

我的猜测是他们添加了getter可以使用它作为一个bean属性。

顺便说一句:你可能想检查之前执行cell.getRichStringCellValue().getString()