Wie andere gesagt haben, können Sie eine Kopie des Arrays zurückgeben kann:
public int[]getMyArray(){
return myPrivateArray.clone();
}
Alternativ können Sie einen Getter bieten einzelne Elemente des Arrays zuzugreifen:
public int getMyArray(int index){
return myPrivateArray.get(index);
}
Wenn schließlich Wenn Sie das Kopieren vermeiden möchten, aber darauf bestehen, alle Elemente auf einmal zurückzugeben, können Sie eine nicht änderbare Listenansicht Ihres Arrays zurückgeben:
public class MyClass{
private Object[]myPrivateArray;
private List<Object>myArrayView=Collections.unmodifiableList(Arrays.asList(myPrivateArray));
public List<Object>getMyArrayView(){
return myArrayView;
}
}
Das ist zwar etwas komplizierter, mit einer Reihe von Grundelementen:
public class MyClass{
private int[]myPrivateArray;
private List<Integer>myArrayView=new AbstractList<Integer>(){
@Override public int size(){
return myPrivateArray.length;
}
@Override public Integer get(int index){
return myPrivateArray[index]
}
}
public List<Integer>getMyArrayView(){
return myArrayView;
}
}
wenn Sie nicht wollen, um den Inhalt von außen Rückkehr Kopie Ihres privaten Array-Objekts ändern. Verwenden Sie entsprechend das tiefe Klonen oder das flache Klonen. – Vishrant
"Wenn ich ... habe einen Getter, der das Array zurückgibt" - * Warum hast du das *? Sie brauchen keinen Getter für alles. – user2357112
Defensive Kopien? Genauso wie jeder änderbare Zustand - wenn Sie ihn nicht offen legen wollen, müssen Sie Kopien oder unveränderliche Objekte zurückgeben. –