История изменений
Исправление
Legioner,
(текущая версия)
:
Упоротость по js не проходит бесследно. Мне надо на яве сляпать приёмник команд из amqp. Команды имеют вид «<имя> <параметр 0> <...>». То есть я просто бедру строку из amqp, потом делаю split по пробелу, по первому элементу выбираю команду, остальное все скидываю в массив аргументов. Если он короче, чем может взять моя функция, то выплёвываем ошибку, если нет, вызываем функцию и выплёвываем то, что она вернёт.
Тебе нужен reflection.
Как он узнаёт, что лямбду надо прицепить к int operation??
Потому, что там один метод.
Что будет, если в интерфейсе больше двух методов?
Оно не скомпилируется.
Как туда запихать больше двух методов?
Использовать полноценные классы вместо лямбд.
Твой код
TwoArgInterface plusOperation = (a, b) -> a + b;
TwoArgInterface plusOperation = new TwoArgInterface() {
@Override
public int operation(int a, int b) {
return a + b;
}
}
Исходная версия
Legioner,
:
Упоротость по js не проходит бесследно. Мне надо на яве сляпать приёмник команд из amqp. Команды имеют вид «<имя> <параметр 0> <...>». То есть я просто бедру строку из amqp, потом делаю split по пробелу, по первому элементу выбираю команду, остальное все скидываю в массив аргументов. Если он короче, чем может взять моя функция, то выплёвываем ошибку, если нет, вызываем функцию и выплёвываем то, что она вернёт.
Тебе нужен reflection.
Как он узнаёт, что лямбду надо прицепить к int operation??
Потому, что там один метод.
Что будет, если в интерфейсе больше двух методов?
Оно не скомпилируется.
Как туда запихать больше двух методов?
Использовать полноценные классы вместо лямбд.
Твой код
TwoArgInterface plusOperation = (a, b) -> a + b;
TwoArgInterface plusOperation = new TwoArgInterface(){
@Override
public int operation(int a, int b) {
return a + b;
}