【发布时间】:2014-11-03 07:32:04
【问题描述】:
我对 Java 还是很陌生,现在我正在尝试制作 Menu 的副本。我想我已经做了一点,我在其中创建了一个新的 Menu 对象,其中包含新的 MenuItems。 MenuItems 是另一个类,它具有两个字符串变量和一个双变量,即 itemName 和 itemDescription 以及 itemPrice。所以我试图将内容,原始MenuItems的三个变量复制到MenuItems副本中,但我不知道如何。我一直在尝试将克隆副本的名称设置为原始名称。
public class Menu
{
Menu()
{
}
final int maxItems = 50;
MenuItem[] food = new MenuItem[maxItems + 1];
public Object clone()
{
Menu menuClone = new Menu();
MenuItem[] foodClone = new MenuItem[maxItems + 1];
for(int i = 1; i <= maxItems + 1; i++)
{
foodClone[i] = new MenuItem();
foodClone[i] = food[i].setItemName();
}
}
这是 MenuItem 类:
public class MenuItem
{
private String name;
private String descrip;
private double price;
MenuItem()
{
}
public String getItemName()
{
return name;
}
public String getItemDescrip()
{
return descrip;
}
public double getPrice()
{
return price;
}
public void setItemName(String itemName)
{
name = itemName;
}
public void setItemDescrip(String itemDescrip)
{
descrip = itemDescrip;
}
public void setPrice(double itemPrice) throws IllegalArgumentException
{
if(itemPrice >= 0.0)
price = itemPrice;
else
throw new IllegalArgumentException("Enter only positive values");
}
public String toString(){
return "Name: " + name + ", Desc: " + descrip;
}
}
【问题讨论】:
-
如果你想克隆一个对象,我建议尝试使用
clone()方法。 -
你必须正确覆盖
clone对象并实现Cloneable..或者简单地制作一个复制构造函数..和tip..java中的数组是基于0的..所以第一个元素是数组[ 0] 不是 [1]