【发布时间】:2010-01-05 15:04:31
【问题描述】:
我从 Java 开始,正在学习 setter、getter 和封装。我有一个非常简单的程序,两个类:
Container有一个私有 int 数组 (numArray) 和他的 setter 和 getter。Main创建一个Container对象并在totalArray方法中使用它。
public class Container {
private int numArray[]= {0,0,0};
public int[] getNumArray() {
return numArray;
}
public void setNumArray(int index, int value){
numArray[index] = value;
}
}
public class Main {
public static void main(String[] args) {
Container conte = new Container();
System.out.println(totalArray(conte.getNumArray()));
conte.getNumArray()[2]++;
System.out.println(totalArray(conte.getNumArray()));
}
private static int totalArray (int v[]){
int total=0;
for (int conta =0; conta<v.length;conta++){
total+=v[conta];
}
return total;
}
}
问题:我可以通过 getter 更改私有 int 数组,我知道这是因为 getNumArray 返回对 numArray 的引用,而不是数组本身。如果我对数组的单个元素感兴趣,我会创建一个带有索引值的 getter,但我想要 totalArray 方法的整个数组。
如何防止numArray 被修改出他的班级?
【问题讨论】:
标签: java arrays encapsulation getter