私は静的なネストされたクラスについて学んでおり、次のことに遭遇しました。
ネストされた静的クラスは、 static キーワードを使用して別のクラス内で宣言されるか、そのクラスの静的コンテキスト内で宣言されます。
私が理解できないのは、「またはそのクラスの静的コンテキスト内」と言うときの意味です。
可能であれば、誰かが私に数行の例を教えてください。「静的コンテキスト」の意味がわかりません。
私は静的なネストされたクラスについて学んでおり、次のことに遭遇しました。
ネストされた静的クラスは、 static キーワードを使用して別のクラス内で宣言されるか、そのクラスの静的コンテキスト内で宣言されます。
私が理解できないのは、「またはそのクラスの静的コンテキスト内」と言うときの意味です。
可能であれば、誰かが私に数行の例を教えてください。「静的コンテキスト」の意味がわかりません。
静的初期化子内のクラスを意味すると思います:
public class OuterClass
{
static
{
class InnerClass
{
}
}
}
静的コンテキストとは、静的に宣言されたものを意味すると言う場合、ネストされた静的クラス、列挙型、またはインターフェイス内にネストできます (列挙型とインターフェイスはデフォルトで静的であり、トップレベルのコンテキスト内でのみ宣言できます)。
また、静的メソッド、静的宣言、または静的ブロック内で内部クラスを宣言できます。これは、ローカル クラスまたは匿名クラスを参照します。
よろしく
静的と宣言されたネストされたクラスは、静的なネストされたクラスと呼ばれます。入れ子になった静的クラスのオブジェクトへのメモリは、特定の外部クラス オブジェクトとは無関係に割り当てられます。入れ子になった静的クラスは、オブジェクト参照を介してのみ、それを囲むクラスで定義されたインスタンス変数またはメソッドを使用します。入れ子になった静的クラスは、最上位クラスのように、外側のクラスまたは他のクラスのインスタンス メンバーと対話します。
外側のクラスに static キーワードを持つ static ネスト クラスを定義する Static ネスト クラスの構文を次に示します。
class OuterClass {
....
static class StaticNestedClass {
....
}
class InnerClass {
.... }
}
入れ子になった静的クラスには、外側のクラス名 OuterClass.StaticNestedClass を使用してアクセスできます。
ネストされた静的クラスのオブジェクトを作成する場合は、次のコードを書き留める必要があります。
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
以下は、内部クラス内の外部クラスのインスタンスへのアクセスを処理する Static ネスト クラスの例です。この例では、値 100 のインスタンス x を持つ「外部」クラスを作成し、その後、内部クラス メソッド check でこの値を呼び出します。それとは別に、この例では別の関数チェックも作成し、その内部で内部クラスの check() メソッドを呼び出します。例が Outer クラスで check() を呼び出すと、Outer クラスのインスタンス x の値が表示されます。
例のコードは次のとおりです。
Outer.java
import java.lang.*;
public class Outer{
int x = 100;
class Inner{
int x = 200;
public void check(){
System.out.println("Value of x is: "+ Outer.this.x );
}
}
public void check(){
new Inner().check();
}
public static void main(String args[]){
new Outer().check();
}
}
リンクhttp://littletutorials.com/2008/03/06/static-nested-classes/にアクセスしてください