首页 > 解决方案 > 自定义 Java 事件

问题描述

如何执行以下操作:

我需要知道如何创建某种类型的事件。

有一个名为 Stater 的类,并有一个名为 Event 的类。类启动器只会初始化所有侦听器,所以我需要从另一个类做的只是:

public class Main {
    public static void main(String[] args) {
        Starter starter = new Starter();
        starter.start();
    }
}

start() 方法只是触发名为 Event 的事件。但是,我不希望在事件触发时预设任何代码,以便我可以这样做:

public class Main {

        public static void main(String[] args) {
            Starter starter = new Starter();
            starter.start();
        }
        public void onEvent(Event event) {
            /* 
            Code when Event fires
            For example, System.out.println(event.getName());
             */
        }
    }

onEvent 方法可以被称为任何东西。它所做的只是在 Event 被触发时运行。

我想知道如何能够创建这样的事件。几个星期以来,我一直试图找到如何做到这一点,但我做不到。任何帮助,将不胜感激!

标签: javaeventsevent-handling

解决方案


你应该使用什么callbacks。在 Java 中,它通常与 lambdas 一起使用,允许编写简短且可读性强的代码。让我们创建一个类Starter


public class Starter {

   private Consumer<Object> onStart;

   public void setOnStart(Consumer<Object> onStart) {
      this.onStart=onStart;
   }

   public void start() {
      // any code
      if(this.onStart != null) 
         this.onStart(<any params>);
    
   }

}

现在你可以运行它了:


// ...

public static void main(String...args) [
   Starter starter = new Starter();
   starter.setOnStart((obj) -> System.out.println("started starter"));
   

   starter.start();
   // prints started starter
   // calls the callback

}

// ...


推荐阅读