Rozważmy następujący kod Scala:Korzystanie Scala z Java: przechodzącą funkcji jako parametry
package scala_java
object MyScala {
def setFunc(func: Int => String) {
func(10)
}
}
Teraz w Javie, chciałbym użyć MyScala
jak:
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);
}
}
Jednakże powyższe nie nie działa (zgodnie z oczekiwaniami, ponieważ Java nie zezwala na programowanie funkcjonalne). Jaki jest najłatwiejszy sposób obejścia funkcji w Javie? Chciałbym ogólne rozwiązanie, które działa z funkcjami mającymi dowolną liczbę parametrów.
EDYCJA: Czy Java 8 ma lepszą składnię niż klasyczne rozwiązania omówione poniżej?
Koniecznie sprawdź artykuł i klasę "FunUtils" Daniela w komentarzach, która pomaga usunąć niektóre z potrzebnych elementów dla '$ tag' i' compose'. –
To bardzo pouczające. Widziałem wcześniej artykuł, ale nie czytałem komentarzy. – Jus12