java - 从动态类引用动态 setter

标签 java class logging dynamic setter

我正在尝试引用 setter ...我收到了帮助并在解决问题之前太早选择了答案...请参见此处:Using a setter from outside a form?

所以,我正在做的是......数据进入日志并被解析,然后返回到显示的表单。

public class Log {
   private MainForm mainForm; // our MainForm variable

   public Log(MainForm mainForm) {
      // setting the MainForm variable to the correct reference in its constructor
      this.mainForm = mainForm;  
   }

   private  void consoleOut(String data) {
     System.out.println(data);
     if (mainForm != null) {
        // now we can use the reference passed in.
        mainForm.setConsoleText("data");
     }
   }
}

这是我表单中的 setter 。

public class MainForm extends FrameView {
    public MainForm(SingleFrameApplication app) {
        super(app);
...........CUT FOR LENGTH.................
    public void setConsoleText(String Text){
        jTextArea2.append(Text);
    }

为简单起见进行了编辑。

出于某种原因,MainForm 在 Log 类中总是显示为 null。

如何获得主表单的引用?

嗯...我只是使用了静态文本框和静态 setter ...仍在寻找更好的主意。

最佳答案

唯一的解释是,当您实例化 Log 时,您将 null 传递给构造函数。您是否在分配主窗体之前调用new Log(mainform)

// Don't do this
private Log log = new Log(mainForm);

private MainForm mainForm = new MainForm();

检查对象的构造顺序。

关于java - 从动态类引用动态 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406238/

相关文章:

ruby-on-rails - Rails 开发模式下的日志轮换?

java - JDBC获取列注释的方法

JavaScript 将函数分配给对象属性

javascript - 在 Reveal.js 中停止片段上的音频

Java嵌套类问题

java - Tomcat 日志策略

java - 我们如何让主线程等待异步日志记录完成(或其他方式)

java - 多线程私有(private)构造函数

java - Jackson:如何在不修改 POJO 的情况下向 JSON 添加自定义属性

java - 使用高级编程语言的简化 MIPS CPU