演習問題7(商品情報)


演習問題7-3 (Prototype)

演習問題7-1や7-2では、同じ内容の商品情報のインスタンスを重複して生成しないようにしました。

そのため、どこかでそのインスタンスの内容を変更したら、そのインスタンスを参照している他のすべてにおいて、その内容が変わってしまうことになります。

そこで、内容を変更する場合には、内容を変更しても他に影響がないように、インスタンスを複製(全く同じ内容のインスタンスを生成)できるように Information クラスを修正してください。


実行結果
(データベースへの接続)
(データベースからの読み込み)
(データベースからの読み込み)
製品名:製品名1、小売価格:200、コメント:[新製品]
製品名:製品名3、小売価格:600
製品名:製品名1、小売価格:150、コメント:[新製品][傷物]


コード

Enshu703.java
public class Enshu703 { public static void main(String[] args) { ProductInfo pi = new ProductInfo(); Information i1 = pi.get(1); Information i2 = pi.get(3); Information i3 = pi.get(1); i1.setComment("新製品"); try { i3 = i3.clone(); // 複製 } catch(CloneNotSupportedException e) { System.err.println(e.getMessage()); } i3.setRetailPrice(150); // 傷物なので、150円に値下げ i3.setComment("傷物"); System.out.println(i1); // i1 の内容は変わらない System.out.println(i2); System.out.println(i3); // i3 の内容は変わる } }






演習問題7-3 (Prototype)