2013-02-25 126 views
2

使用java,有没有办法将数组中的某些值设置为static/uneditable?我试图制作一个数独游戏,所以我想要设置初始数字以便程序不能改变它们,但其他数字是可以改变的。到目前为止,我已经做了一些Google搜索,但我的搜索没有提供任何相关信息。将数组值设置为静态

+0

这来自你的课堂设计。用访问器方法保护数据。 – vikingsteve 2013-02-25 19:19:43

+1

这是不可能的数组,但你可以设计你自己的类,并确保某些字段不能被编辑。 – Ankit 2013-02-25 19:21:18

+0

无法将数组中的任何或所有元素标记为“只读”。您可以做的最好的方法是在方法调用后面“隐藏”数组。你可以在数组的引用上使用'final',但这只会使它(不)有可能改变引用哪个数组 - 它不会阻止修改数组。 – 2013-02-25 19:22:13

回答

2

您必须隐藏该数组,使其变为私有。永远不会将引用返回给数组,而是返回一个克隆。

例如

public class ArrayHolder { 
    private String[] array; 

    public ArrayHolder(String[] inputArray) { 
     //make a copy of inputArray 
     //assign the reference to the copy to this.array 
    } 

    public String[] getArray() { 
     //make a copy of the array 
     //return the reference to the copy 
    } 
} 

至于使一些元件可更新,则必须在类写赋值函数方法(一个或多个),因此,只有那些方法可以改变阵列中的某些元件。