如何访问对象中的数组

时间:2014-08-31 14:50:33

标签: java arrays object

编写一个名为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的属性?

2 个答案:

答案 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;
}