编写一个名为Menu的完整文档类,该类存储数组中的项列表,并提供与此列表交互的接口。菜单一次最多可容纳50个项目,因此请使用最终变量MAX_ITEMS = 50。
我创建了构造函数和一个名为MenuItem的单独类
public class Menu implements Cloneable {
final int MAX_ITEMS = 50;
public Menu(){
MenuItem[] menu = new MenuItem[MAX_ITEMS];
}
}
我想创建一个克隆菜单的方法。如何在菜单中访问每个MenuItem的属性?
答案 0 :(得分:0)
我不认为你必须经历所有这一切,假设A是菜单......
public static Menu clone(){
Menu B = this;
return B;
}
然后只需使用
调用它Menu B = A.clone();
答案 1 :(得分:0)
您正在创建MenuItem[] menu
作为局部变量,并且永远不会将其存储在构造函数之后。因此,您不仅无法克隆它,也无法再次访问它。
尝试使用menu
变量的字段,如下所示:
public class Menu implements Cloneable {
final int MAX_ITEMS = 50;
private MenuItem[] menu;
public Menu(){
menu = new MenuItem[MAX_ITEMS];
}
}
现在,Menu类中的任何方法都可以访问您在构造期间设置的menu
。
至于克隆,取决于你想克隆的程度。如果您只想要一个引用内存中相同menu
数组的新Menu对象,请参阅cloneOne。如果您想要一个新的Menu对象,其中包含与旧menu
数组相同的新menu
数组,请参阅cloneTwo。如果你想要更进一步,你将不得不为MenuItem类提供一些细节:
public class Menu implements Cloneable {
final int MAX_ITEMS = 50;
private MenuItem[] menu;
public Menu(){
menu = new MenuItem[MAX_ITEMS];
}
public Menu cloneOne(){
Menu a = new Menu();
a.menu = menu;
return a;
}
public Menu cloneTwo(){
Menu a = new Menu();
a.menu = new MenuItem[menu.length];
for(int i = 0; i < menu.length; i++)
a.menu[i] = menu[i];
return a;
}