2017-06-09 3 views
-3

私たちはJavaの外部クラス静的メソッドの内部クラスインスタンスを作成することはできませんが、C#を使用しています.C#とJavaの動作を説明してください。C#とJavaのネストされたクラス違反バリエーション

C#コード:

class OuterClass 
{ 
    public static void Main(string[] args) 
    { 
     Nested nested = new Nested(); 
     Nested.InnerNested innerNested = new Nested.InnerNested(); 
    } 
    class Nested 
    { 
     public class InnerNested 
     { 
     } 
    } 
} 

Javaコード:

public class OuterClass { 

    public static void main(String[] args) { 

     //Error: non-static variable this cannot be referenced from a static context 
     Nested out = new Nested(); 

     //Error: non-static variable this cannot be referenced from a static context 
     Nested.InnerNested i = new Nested.InnerNested();   
    } 

    class Nested { 

     public class InnerNested {  } 

    } 

} 
+0

[C#ネストされたクラス](https://stackoverflow.com/questions/10676003/c-sharp-nested-classes)の可能な複製 –

+1

JavaがC#とまったく同じ場合、2つの言語にはなりません。 Javaの内部クラスを静的に宣言します。 – khelwood

+1

これは2つの異なる技術です...同じ機能が期待できません。 –

答えて

0

Javaの静的ネストされたクラスは、C#ネストされたクラスに似ています。 1は、外部クラスのオブジェクトの参照を使用してJavaで内部のネストしたクラスにアクセスすることができますが:

Javaコード:

public class OuterClass { 

    public static void main(String[] args) { 

     // Creates a reference of our outer class 
     NewClass myClass = new OuterClass(); 

     // Uses it to create an instance of the nestled class 
     OuterClass.Nested nested = OuterClass.new Nested(); 

     // Uses the nestled class object to instantiate an inner nestled object 
     OuterClass.Nested.InnerNested inner = nested.new InnerNested(); 

    } 


    class Nested { 

     public class InnerNested {  } 

    } 
} 

この答えは、次の記事に基づいていた:

関連する問題