コードでは、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
が、変数を取得してその新しいインスタンスを作成します。メソッドは、元と同じ値を持つ新しく作成された変数を変更します。ただし、メソッドが変数を変更するように明確に指示している場合、コンストラクターが送信した変数を技術的に変更します。points
polygonFrom
polygonFrom
corners
points
polygonFrom
points