彼の方法を呼び出すために、非静的なオブジェクトをどこで取得しますか?

StackOverflow https://stackoverflow.com/questions/19836356

  •  25-07-2022
  •  | 
  •  

質問

Javafxクラスについての非常に初心者Q。 MainはJavafxのメインスタートクラスであり、コンストラクターがありません(理由はわかりません)

main.java

class Main extends Application {
   Log  log;   // class, not shown here
   Work work;
   @Override
   public void start() // entry point
   {
      log  = new Log("main.log"); // opens log file, need to be non-static
      work = new Work();
   }
}

work.java

class Work{
     public Work() // constructor
    {
       Main.log.write("Making work object");  // error
       // What is the right method to call one non-static class from another ???
    }
役に立ちましたか?

解決

これを試して

class Main extends Application {
   public static Log  log = new Log("main.log");   // class, not shown here
   Work work;
   public start() // entry point
   {
       work = new Work();
   }
}

次に、あなただけを使用できます

Main.log.write("Making work object");

他のヒント

ログをワークインスタンスに渡します。

class Main extends Application {
   Log  log;   // class, not shown here
   Work work;
   public start() // entry point
   {
      log  = new Log("main.log"); // opens log file, need to be non-static
      work = new Work(log);
   }
}

== work.java ==

class Work{
    Log  log;
    public Work(Log log) // constructor
    {
       this.log = log;
       log.write("Making work object");           
    }

君の Log ある必要があります publicstatic.

何かが宣言された場合にのみ public 別のクラスでアクセスできますか(継承なし、つまり)

何かが宣言された場合にのみ static あなたはそれをとして参照してください Classname.VariableName

class Main extends Application {
   public static Log  log; // see the change ?   
   ...
   public void start() // this needed a return type
   {
      ...
   }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top