私は過去数時間、以下に困惑しています。次のように、ゼロ分数の定数を持つ Fraction クラスがあります。
class Fraction{
private static final Fraction ZERO = new Fraction(0,1);
public static Fraction zero(){
return ZERO;
}
[etc]
}
その後、実行中に ZERO の値が変化することを発見しました。
System.out.println(Fraction.zero());
Fraction half = new Fraction(1, 2);
System.out.println(Fraction.zero());
出力:
1/1
1/2
明らかに、生成される値は 0/1 である必要があり、さらに重要なことに、固定されている必要があります。Fraction クラスとそれに関連付けられた GCD 計算機の実装に問題があることは間違いありません。過去にそれらをうまくかつ広範囲に使用してきたからです。
この奇妙な動作の原因に関するアイデアや考えは大歓迎です。