は、浮動小数点値0.5は、それは()編を追加されたコードブロックの外からアクセスです:ArrayList.add()によるオブジェクトのインスタンス化?次の例で
ArrayList<Float> myFloatArray = new ArrayList<Float>();
{
myFloatArray.add(0.5f);
}
// Data is accessible out of the block
誰かがオブジェクトのインスタンス化の面で何が起こるか説明できますか?浮動小数点オブジェクトは、定義されたブロックを離れるときに、なぜ破壊されないのですか?それは私がこれを求めていた理由は、私が各float値に時刻情報を追加したいということです
myFloatArray.add(new Float(0.5f));
を書くことに相当します。私は書くために私を可能にするクラスを作成する方法について考えた:
myDataPointArray.add(new dataPoint(new GregorianCalendar(2011, 11, 11), 0.5f);
しかし、(予想通り)、ArrayListには、ブロックデータの空の外には()編を追加しました。私はそれが助けになるかもしれないと信じているように私のクラスを不変にしようとしましたが、それはうまく動作しません。誰かが私にこの行動が記録されている正しい場所を指摘できますか?私はそれを見つけることができず、私はこのArrayListの例を超えていると思う。
ヒープ上で(すなわち、「new」を介して)作成された項目は、スコープ(すなわちプログラムブロック)によって制御されるライフタイムを持たない。だから私はあなたの2番目の例が問題を引き起こしている理由を理解していない(私はリストが空であるとは思わない)。自己完結型のテストケースを作成できますか(http://sscce.org参照)? –