0

如果我需要自定义类型化集合的自定义字符串表示,这是最好的选择子类集合并覆盖 toString(),或者只是创建一个实用方法来获取自定义类型化集合并返回自定义字符串?还有其他选择吗?

4

2 回答 2

2

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

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

在“实用方法”选项中,您还有另一个选择:

  • 创建一个简单的静态实用程序方法。简单,快速,这应该是你的首选。
  • 使用类似的方法创建一个“格式化程序”对象formatter.formatAsString(targetObject)。如果您有一些可以存储在格式化程序中的格式化选项,这将很有用。
于 2013-03-27T04:44:00.667 回答
0

The Java object's http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html toString method is intended to provide a string representation for the object. So overriding the toString sounds logical.

于 2013-03-27T03:35:07.113 回答