So kapseln Sie ein Array in Java
Ich beginne mit Java und lerne über Setter, Getter und Encapsulation. Ich habe ein sehr einfaches Programm, zwei Klassen:
Container
hat ein privates Int-Array (numArray
) mit seinem Setter & Getter.
Main
schafft eineContainer
Objekt und verwendet es intotalArray
Methode.
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;
}
}
Problem: Ich kann das private int-Array durch den Getter ändern, ich weiß, das liegt darangetNumArray
gibt einen Verweis auf zurücknumArray
nicht das Array selbst. Wenn ich an einem einzelnen Element des Arrays interessiert wäre, würde ich einen Getter mit einem Indexwert erstellen, aber ich möchte das gesamte Array für dastotalArray
Methode.
Wie kann ich das verhindern?numArray
von aus seiner Klasse geändert werden?