There is a 수중탐지기 위반:
public void setMyArray(String[] myArray) {
this.myArray = myArray;
}
public void setMyArray(String[] newMyArray) {
if(newMyArray == null) {
this.myArray = new String[0];
} else {
this.myArray = Arrays.copyOf(newMyArray, newMyArray.length);
}
}
하지만 왜 그랬을까?
이 솔루션은 할 때 복제본에 오브젝트 내의 it gets 통과했습니다. 이 호출됨 방어적 복사 . # 39 의 후속 수정, 이 어레이에는 저장됩니까 won& 취합은 영향을 미치지 오브젝트 내의.
참고로 이 모든 것은 qic 변경 가능 집단 (객체에는, 실제로 모든 변경 가능) - 단순히 배열입니다. 또한 이로 인해 성능 저하를 함께 하는 다른 평가를 받고 있다.
기본적으로 통해 위험 참조입니다 시맨틱스를 (복제본에 없이) 는 시스템 및 이를 수정할 수 있는 랑하니 에로누스리 소유한 때, 또한 다른 구조를 가지고 있는 앨리어스를 수정하십시오 스토리지와의. 방어적 복사 및 관련된 문제에 대해 많은 정보를 찾을 수 있습니다 (alias 객체에는 온라인.
같은 문제가 있었습니다.
>. 보안 - 어레이입니다 직접 저장되어 사용자 제공 어레이입니다 >. # 39 palomitas& & # 39;; directly. 저장됩니다.
내 원래 방법:
public void setCheck(boolean[] palomitas) {
this.check=palomitas;
}
고정식입니다 돌렸다.
public void setCheck(boolean[] palomitas) {
if(palomitas == null) {
this.check = new boolean[0];
} else {
this.check = Arrays.copyOf(palomitas, palomitas.length);
}
}
다른 예제:
>. 보안 - 어레이입니다 직접 저장되어 사용자 제공 어레이입니다
private String[] arrString;
public ListaJorgeAdapter(String[] stringArg) {
arrString = stringArg;
}
고정:
public ListaJorgeAdapter(String[] stringArg) {
if(stringArg == null) {
this.arrString = new String[0];
} else {
this.arrString = Arrays.copyOf(stringArg, stringArg.length);
}
}
이 어레이에는 저장 / 전에 그들을 없애기 위해 클론할 반품할 수 있습니다 다음 그림과 같이 구축상의 도왔으매 제인 눈 또는 원본 데이터를 수정할 수 있는 클래스 a 클래스에 단지 저들이요 복제본에 내려받습니다
public byte[] getarrString() {
return arrString.clone();
}
/**
* @param arrStringthe arrString to set
*/
public void arrString(byte[] arrString) {
this.arrString= arrString.clone();
}
그리고 지금 내가 이렇게 사용되었기 I am not 조절이 수중탐지기 위반.
이 모든 것보다 더 많은 부드럽게를 it& # 39 의. 수중탐지기 위반) 로 이름을 바꾸고 방법을 매개변수입니다 피하기 위해 다른 사항은요 됩니다.
http://osdir.com/ml/java-sonar-general/2012-01/msg00223.html
public void setInventoryClassId(String[] newInventoryClassId)
{
if(newInventoryClassId == null)
{
this.inventoryClassId = new String[0];
}
else
{
this.inventoryClassId = Arrays.copyOf(newInventoryClassId, newInventoryClassId.length);
}
}
이 수비 구축상의 운행에서어떠한 가는 데 많은 시간을 절약할 수 있습니다. 다른 좋은 솔루션이므로 구아바 확보하십시오 도달할 수 있는 목표: 이무터블콜레스티언스
http://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained