문제

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 될 필요가있다 public 그리고 static.

무언가가 선언 될 때만 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