共有参照を最善の方法で理解しようとしていますが、完全に理解しているかどうかはわかりません。
共有参照についての私の理解は、コレクションがあり、コード内にその特定のコレクションへの参照が 2 つ以上存在する場合です。それらの参照の 1 つで変更された場合、他の参照は同じではなく、エラーが生成されます。正しいですか?
よろしく
共有参照を最善の方法で理解しようとしていますが、完全に理解しているかどうかはわかりません。
共有参照についての私の理解は、コレクションがあり、コード内にその特定のコレクションへの参照が 2 つ以上存在する場合です。それらの参照の 1 つで変更された場合、他の参照は同じではなく、エラーが生成されます。正しいですか?
よろしく
あなたとあなたの兄弟がサーカスにいて、それぞれ風船とペンの賞品を獲得したと想像してください。あなたは風船に幸せそうな顔を描き、弟は彼の風船に悲しい顔を描きます。
現在、参照を共有していません。お互いを変更せずに、バルーンに描画される内容を変更できます。
悲しいことに、あなたはうっかり風船を手放してしまいましたが、弟はあなたを愛しているので、自分の風船をあなたと共有することを申し出て、2 つ目の紐を結び、その紐をあなたに渡しました。これで、1 つのバルーンへの参照が共有されました。
これで、バルーンの顔に加えられた変更はすべて、2 人で共有されます。風船が1つとひもが2つ入っています。あなたが持っている風船に幸せそうな顔を描くと、お兄さんも同じ風船なので、持っている風船にも幸せそうな顔が見つかります。
これらの参照のいずれかで変更された場合、他の参照は同じではなく、エラーが発生しますか?
正しいが部分的に。コレクションのコンテンツが 1 つの参照によって変更された場合、他の参照も更新されたコンテンツを指します。
あなたの他の部分は、それがエラーを生成すると言っています。まあ、それはロジックに依存します。
class A
{
public static void main(String[] args)
{
A a1 = new A();
A a2 = a1;
A a3 = a2;
}
}
ここでは、すべての参照が同じオブジェクトを指しています。したがって、 object が によって変更された場合a1
、他の参照a2
にa3
も変更状態が表示されます。