2014-11-04 94 views
-1

我在創建一個好的複製構造函數時遇到了問題。我希望能夠創建一個新的對象,該對象在它作爲更改副本的對象時不會更改。問題是,我的PizzaOrderNew實例變量是另一個類的所有對象,具有實例變量,奶酪,大小,火腿,意大利辣香腸的比薩餅以及典型的訪問器和增變器。 我試過了:複製構造函數有問題

public PizzaOrderNew(PizzaOrderNew otherPizzaOrderNew) 
{ 
    pizza01.setSize(otherPizzaOrderNew.pizza01.getSize()); 
    pizza01.setHam(otherPizzaOrderNew.pizza01.getHam()); 
    pizza01.setCheese(otherPizzaOrderNew.pizza01.getCheese()); 
    pizza01.setPepperoni(otherPizzaOrderNew.pizza01.getPepperoni());   
} 

但是這會引發異常。我已經試過:

public PizzaOrderNew(PizzaOrderNew otherPizzaOrderNew) 
{ 
    pizza01 = otherPizzaOrderNew.pizza01;   
} 

但是這使得它如此當原始確實

+1

你可以發佈PizzaOrderNew類,它給出了什麼異常? – 2014-11-04 00:08:48

+0

第二個片段「失敗」,因爲你真正分配的是對對象的引用,而不是對象本身的值。換句話說,你的副本根本就不是副本。 – tommyo 2014-11-04 00:09:11

+0

Dici是正確的,我得到一個空指針異常。我正在嘗試Dici的解決方案。我已經將pizza01初始化爲默認值,並且它仍然會生成一個NullPointerException。我相信Dici和tommyo都是正確的,只有一小部分不見了。你有沒有更多關於班級的信息?非常感謝你們 – user3624385 2014-11-04 01:52:25

回答

0

我猜你得到一個NullPointerException因爲pizza01未初始化拷貝變化。用一些默認值初始化它,然後在第一個代碼片段中設置它的屬性。