1

私は4つのクラスを持っています

Class A {    
    public void setMyArray(String[] myArray) { 
      this.myArray = myArray; 
    }
}

Class B {    
    public void setMyArrayList(ArrayList myArray) { 
      this.myArray = myArray; 
    }
}
Class C {
  public void setX(int x) { 
  this.myX = x; 
}}
 Class D {    
public void setX(Integer x) { 
  this.x = x; 
}

}

ソナーは、最初のクラスのみで問題を報告します「配列は直接保存されています」

しかし、ソナーは 2 番目のクラスで同じ問題を報告しませんでした。なぜだろう?

4

1 に答える 1

3

誰でも外部配列を変更できるからです。

リストを使用すると、必要に応じて外部アクセスを容易にしながら、その問題を回避するために変更不可能なリストを渡すことができます。

したがって、2 番目のケースでも問題は存在しますが、それほど一般的ではなく、より簡単に回避できます。

生配列の使用には他にも問題があります。配列を拡張する必要があり、外部アクセスも必要な場合、それはもうありません。新しい拡張配列ではなく、古い配列を指しています。リストを使用すると、すべてがカプセル化されます。

于 2012-10-10T21:15:06.840 に答える