У меня есть список слушателей событий в моем коде:Переменные аргументы с разными типами?
private List<EventListener> listeners = new ArrayList<EventListener>();
listeners.add(new EventListener() {
@Override
public void someEvent(String arg1, MyClass arg2) {
// ...
}
@Override
public void someOtherEvent(AnotherClass arg1, int arg2) {
// ...
}
}
В настоящее время я звоню слушателей, используя для цикла:
for (EventListener listener : listeners) {
listener.someEvent("Hello world", (MyClass) myObject);
}
Я хотел бы назвать его с помощью одного метода, например:
fireEvent("someEvent", "Hello world", (MyClass) myObject);
Возможно, массив или что-то еще для аргументов события.
Один из способов сделать это - создать какой-то объект события, но я не особо хочу это делать, поскольку он кажется беспорядочным (кто-то скажет мне, если я ошибаюсь здесь, я неопытен с Java). Есть ли способ создать fireEvent, подобный выше? EventListener - это интерфейс, если это помогает.
Возможный дубликат [Java «params» в методе подписи?] (Http://stackoverflow.com/questions/519752/java-params-in-method-signature) –
Аналогичный, но не совсем: этот вопрос предполагает что все аргументы одного типа, и ответ не будет работать здесь. – callumacrae