Использование Scala из Java: передача функций в качестве параметров

Рассмотрим следующий код Scala:

package scala_java
object MyScala {
  def setFunc(func: Int => String) {
    func(10)
  }
}

Теперь в Java я бы хотел использовать MyScala как:

package scala_java;
public class MyJava {
    public static void main(String [] args) {
        MyScala.setFunc(myFunc);  // This line gives an error
    }
    public static String myFunc(int someInt) {
        return String.valueOf(someInt);
    }
}

Однако вышеуказанное не работает (как и ожидалось, поскольку Java не допускает функционального программирования). Каков самый простой способ передать функцию в Java? Мне нужно универсальное решение, которое работает с функциями, имеющими произвольное количество параметров.

РЕДАКТИРОВАТЬ: Имеет ли Java 8 синтаксис лучше, чем классические решения, обсуждаемые ниже?

44
задан Jus12 9 November 2017 в 11:45
поделиться