Lazily initialize event invokers

This commit is contained in:
shedaniel
2020-11-13 22:54:58 +08:00
parent 4ed2087c23
commit 5ad8a3fc83

View File

@@ -122,7 +122,6 @@ public final class EventFactory {
this.clazz = Objects.requireNonNull(clazz);
this.function = function;
this.listeners = emptyArray();
update();
}
private T[] emptyArray() {
@@ -135,19 +134,22 @@ public final class EventFactory {
@Override
public T invoker() {
if (invoker == null) {
update();
}
return invoker;
}
@Override
public void register(T listener) {
listeners = ArrayUtils.add(listeners, listener);
update();
invoker = null;
}
@Override
public void unregister(T listener) {
listeners = ArrayUtils.removeElement(listeners, listener);
update();
invoker = null;
}
@Override
@@ -158,7 +160,7 @@ public final class EventFactory {
@Override
public void clearListeners() {
listeners = emptyArray();
update();
invoker = null;
}
public void update() {