覆盖toString()以获取迭代变量

时间:2017-09-02 19:59:09

标签: java oop override

我希望修改toString()方法,以便我的print语句返回“some random text”

PropertyChange (ConversationIndex)
PropertyChange (Subject)
PropertyChange (Start)
PropertyChange (StartInStartTimeZone)
PropertyChange (StartUTC)
PropertyChange (End)
PropertyChange (EndInEndTimeZone)
PropertyChange (EndUTC)
PropertyChange (Duration)
PropertyChange (AllDayEvent)
PropertyChange (StartInStartTimeZone)
PropertyChange (StartUTC)
PropertyChange (End)
PropertyChange (EndInEndTimeZone)
PropertyChange (EndUTC)
PropertyChange (Start)
PropertyChange (EndInEndTimeZone)
PropertyChange (EndUTC)
PropertyChange (Duration)
PropertyChange (End)
PropertyChange (MeetingStatus)
Write (false)
BeforeCheckNames (false)
AfterWrite ()
<Unknown(DispID=0x0000FC95)> (false)

如何为集合中的每个List打印“一些随机文本”?

1 个答案:

答案 0 :(得分:1)

您覆盖匿名toString()类的HashSet方法 当您在代码中调用toString()HashSet元素的List<Integer>方法时。
不会使用overriden方法。

  

如何为集合中的每个List打印“一些随机文本”?

您无法使用实际方法,因为List实施具有自己的toString()实施。

您可以创建并使用自己的List实现来覆盖toString,但对于这样一个简单的需求来说似乎过于复杂。

如果我是你,我会定义匿名toString()类的HashSet实现来迭代元素,我会显示每个元素的消息:

HashSet<List<Integer>> set = new HashSet<List<Integer>>() {
  @Override
  public String toString() {
    if (size() == 0) {
        return "";
    }

    StringBuilder sb = new StringBuilder();
    Iterator<List<Integer>> it = iterator();
    sb.append('[');
    for (;;) {
        it.next();
        sb.append("some random text");

        if (!it.hasNext()) {
          return sb.append(']').toString();
        }
        sb.append(',').append(' ');
    }
  }
};