自定义类型化集合的自定义字符串表示形式



如果我需要自定义类型集合的自定义字符串表示,这是最好的选择——子类化集合并覆盖toString(),还是仅仅创建一个实用程序方法来接受自定义类型集合并返回自定义字符串?还有别的选择吗?

我倾向于创建一个实用程序方法。几个原因:

  • 逻辑上,您的自定义字符串表示是您在原始类的顶部分层的东西:它不是原始类的一部分。所以它不属于原始类的定义。
  • 仅仅为了重写一个方法而创建子类可能是多余的
  • 创建自定义子类使得无法处理出于不同原因覆盖原始类的对象。如果将继承用于这样的事情,继承层次结构很快就会变得难以管理。永远更喜欢组合而不是继承!
  • 出于某些原因,您可能希望继续使用原始toString():也许您需要两个字符串表示,或者其他库依赖于原始toString()的行为。在这种情况下,重写它将导致问题.....

在"utility method"选项中你有另一个选择:

    创建一个简单的静态实用程序方法。简单,快速,这应该是你的首选。
  • formatter.formatAsString(targetObject)这样的方法创建一个Formatter对象。如果你有一些格式化选项可以存储在格式化程序中,这可能会很有用。

Java对象的http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.htmltoString方法旨在为对象提供字符串表示。所以重写toString听起来合乎逻辑。

最新更新