コードでは、Polygon は次のようになります。
Point[] points = new Point[]{new Point(1,1), new Point(2,2)};
Polygon p = polygonFrom(points);
括弧内のコーナーの配列を除いて。
これは基本的にpolygonFrom関数にpoints配列を与え、それで好きなことをします。ただし、polygonFromメソッドが何を行っても元の配列は実際には変更されませんがpoints、操作するために独自の配列が作成されます。
たとえば、次のようなコードがあるとします。
String s = "Cheeseburger";
sayString(s);
そして方法:
public void sayString(String par1)
{
par1 = par1 + "1";
System.out.println(par1);
}
この出力は:Cheeseburger1ですが、文字列sはまだ のみCheeseburgerです。
さらに説明が必要な場合は、お尋ねください。
編集: Paul Bellora は、メソッドが配列をpolygonFrom変更できるいくつかの状況があることを指摘しました。ここでそれを説明しようとします。pointsただし、これが意味をなさない場合でも、まだ心配する必要はありません (これらすべてを理解するのは大変なことです)。
polygonFromメソッドは、独自のメソッド内およびクラス全体内の任意の変数を変更できます。したがって、points配列がメソッドの外部 (つまり、メソッドの外部) で初期化されたmain場合、polygonFromメソッドは配列を変更できますpointsが、メソッド内のコードがpolygonFromその変数を直接変更するように指示されている場合に限ります。これが理にかなっていることを願っています。
たとえば、クラスでは次のようになります。
Point[] points;
public MethodAccess()//constructor
{
points = new Point[]{new Point(1,1), new Point(2,2)};
Polygon p = polygonFrom(points);
}
public Polygon polygonFrom(Point[] corners){
//doing stuff with corners variable here
points = corners; //this will change the points variable that was passed
}
コンストラクターは変数を送信しますpolygonFromが、変数を取得してその新しいインスタンスを作成します。メソッドは、元と同じ値を持つ新しく作成された変数を変更します。ただし、メソッドが変数を変更するように明確に指示している場合、コンストラクターが送信した変数を技術的に変更します。pointspolygonFrompolygonFromcornerspointspolygonFrompoints