-3

誰かがクラスからインスタンスを取得する方法を教えてくれるかどうか疑問に思っています。
これまでのコードは次のとおりです。これは別の投稿で見ましたが、引き続きNullPointerException

これが私のメインクラスです。

public class Main {

private String name;
private static Main instance;
public static void main(String[] args) {
     Test.sayMyName();
}

public Main(){
    instance = this;
}

public static Main getInstance(){
    return instance;
}

public void setName(String name){
    this.name = name;
}

public String getName(){
    return this.name;
}
}

そして、これは私の他のクラスです。

public class Test { 
public static void sayMyName(){
    Main.getInstance().setName("Hi im John");
    System.out.println(Main.getInstance().getName());
}   
}

エラーが発生しています"Main.getInstance().setName("Hi im John");"

4

4 に答える 4

3

以下を遅延初期化に変更します

public Main(){
    //instance = this;
}

public static Main getInstance(){
    if(instance == null){
          instance = new Main();

    }
    return instance;
}
于 2013-11-14T13:35:56.407 に答える
0

静的メンバ インスタンスは、クラス Main のコンストラクタでのみ設定されます。そのコンストラクターを呼び出しているコードのどこにもありません。

于 2013-11-14T13:36:13.273 に答える
0

代わりにこれを試してください:

public class Main {

   private String name;
   private static Main instance;
   public static void main(String[] args) {
        Test.sayMyName();
   }

   public Main(){

   }

   public static Main getInstance(){
if (instance == null) {
   instance = new Main();
} ;
return instance;
   }

   public void setName(String name){
       this.name = name;
   }

   public String getName(){
return this.name;
   }
   }
于 2013-11-14T13:36:57.647 に答える