Index: [Article Count Order] [Thread]

Date:  Sat, 25 Nov 2000 23:11:14 +0900
From:  "Oota" <oota@....jp>
Subject:  [XP-jp:01186] Re: Test First Programming でも、デバッグは必要ですね。
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <000001c056eb$3e38ff80$010400c8@Ra20>
In-Reply-To:  <B645D684.2C15%khosokawa@....com>
Keywords:  XP
Posted:  Sat, 25 Nov 2000 23:23:12 +0900
X-Mail-Count: 01186

 早稲田大学の太田です。ちょっと気になったところを。

> /* test only */ public boolean equals(Sum sum) {
>     System.out.println("Sum.equals");
>     return name.equals(sum.getName()) && amount == sum.getAmount();
> }
>
> これで、テストを実行しましたが、思っていた通り、「Sum.eq
> uals」は、表示されま
> せんでした。そこでキャストを使い、isEqualを修正しました。
>
> --- SummarizerTestHelper 14:51
>
> public boolean isEqual(ArrayList first, ArrayList second) {
>     if (first.size() == second.size()) {
>         for (int index = 0; index < first.size(); index++) {
>
>             System.out.println("first " +
> first.get(index).toString());
>             System.out.println("second " +
> second.get(index).toString());
>
>             if (! ((Sum) first.get(index)).equals((Sum)
> second.get(index)))
> {
>                 return false;
>             }
>         }
>     }
>     return false;
> }

 ここで起こっている問題は、

> /* test only */ public boolean equals(Sum sum) {
>     return name.equals(sum.getName()) && amount == sum.getAmount();
> }

 を

/* test only */ public boolean equals(Object sum) {
    return name.equals((Sum) sum.getName()) && amount == (Sum)
sum.getAmount();
  }
 とすれば、

>             if (! ((Sum) first.get(index)).equals((Sum)
> second.get(index)))

 において、キャストをしなくても済むのではないのでしょうか。equals(Sum
sum)ではOjbectのequals(Ojbect obj)をオーバーライドはしていませんよね。
確か、何ヶ月か前のC MAGAZINEで同じような話があったような気がします。

早稲田大学大学院理工学研究科情報科学専攻M2 太田健一郎
e-mail Address oota@....jp
               oota@....jp