2017-07-21 4 views
-2

私はすでに完全な検索をしていましたが、静的メソッドmain()内のオブジェクトをインスタンス化してから、静的変数またはメソッド。 しかし、私はこれを行っていると信じていますので、ここでは静的コンテキストから参照できない非静的変数を取得する問題を理解できません。メインから非スタティックメソッド(コンストラクタ)にアクセスできない

私はちょうどJavaを学ぼうとし始めていますが、この基本的なコンストラクタの仕事はできませんか?

public class Main 
{ 
    public static void main(String[] args) 
    { 
     A outer = new A(); //<-- Error here 
    } 

    class A 
    {  
     A() 
     { 
      System.out.println("I'm from outer class A"); 
     } 
    } 
} 

静的宣言するとクラスAをインスタンス化しますが、オブジェクトを作成したときにこれを行う必要はありません。私は空のコンストラクタだけを持っている場合、それはまた動作しません。

誰かが私に非常に感謝してくれるのを助けることができたら。私はそれが間違いなく単純なエラーだと知っていますが、私はそれで何時間も探していて、それを理解することはできません。

+3

ここには内部クラスがあります。内部クラスは、囲むクラス(あなたの場合はMain)のインスタンスを必要とします。 – Eran

+0

@Eranが何を言っているのかをもっと明確にするには、 'main'メソッドで使用しているクラスを' A'の代わりに 'Main'を表現するように変更してみてください。 – SomeJavaGuy

+1

'A'静的にする(' static class A {} ') – Aconcagua

答えて

0

私は今何が起こったかを見ます。 私はメインの中で "A"クラスを作りました。それはエラーでした - それは外にあるはずです。言い換えれば、私は括弧を欠いていた。

ネストされたクラスについてのチュートリアル(クラス "B"は "A"の内側でしたが、私はこのポストの目的のために削除しました)に従っていました。

忍耐力に感謝して、愚かなエラーでした。

関連する問題