ArrIgがペアの静的ネストされたクラスであるように、私はこのコードを書くことになっていました。しかし、私はそれらを独立したクラスとして宣言しましたが、コードはまだ期待通りに実行されました。なぜそれがまだ走ったのか理解しています。静的ネストされたクラスのセキュリティJAVA
staticは、Pairが呼び出されるとArrIgオブジェクトが呼び出されるのを防ぎます(ArrIgはペアのネストされたクラスであると仮定します)。さらに、これは静的ネストされたクラスの構文に違反しましたが、それでも機能しました。このコードを公開している危険性は何ですか?
public class ClassPair {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] Ig= {1,2,3,4};
Pair pair= ArrIg.minmax(Ig);
System.out.print("min :"+pair.getFirst()+" | max :"+pair.getSecond());
}
}
class Pair {
public Pair(int a, int b){
first=a;
second=b;
}
public int getFirst(){
return first;
}
public int getSecond(){
return second;
}
private int first, second=0;
}
class ArrIg{
public static Pair minmax(int [] a){
int min= a[0];//1
int max=a[0];//1
for(int i=0; i<a.length;i++){
if (min>a[i]) min =a[i];//1
if (max<a[i]) max=a[i];//2,3,4
}
return new Pair(min ,max);
}
}
'Pair'クラスではデータを十分にカプセル化していません。そのクラスで作業する必要があります。 – MaxZoom
@MaxZoomプライベートフィールドをfirstとsecondのプライベートフィールドに変更しました。私は内部クラスとしてArrIgを宣言していたので、他の危険性は何もありませんでした。私はコードを – BattleDrum
に公開しました。 – MaxZoom