Próbuję użyć lambdas w Java
, ale nie mogę zrozumieć, jak to działa. Stworzyłem @FunctionalInterface
takiego:Lambdas w FunctionalInterfaces w Javie
@FunctionalInterface
public interface MyFunctionalInterface {
String getString(String s);
}
teraz w moim kodu używam lambda
jak tutaj:
MyFunctionalInterface function = (f) -> {
Date d = new Date();
return d.toString() + " " + person.name + " used fnc str";
};
Następnie chcę, aby korzystanie z moim function
przekazaniem go do konstruktora z innej klasy i używać go tak:
public SampleClass(MyFunctionalInterface function) {
String tmp = "The person info: %s";
this.result = String.format(tmp, function.getString(String.valueOf(function)));
}
Dlaczego muszę go valueOf()
tu użyć? Pomyślałem, że dzięki za to mogę użyć tylko function.getString()
?
wyjściowa: Tue Sep 19 11:04:48 CEST 2017 John used fnc str
Twoja funkcja przyjmuje 'String' jako parametr. Odczytując format ciągu, należy przekazać mu informacje o osobie jako "String". W tej chwili przekazujesz funkcję string samej funkcji do tej funkcji. – marstran
Nie jest jasne, co próbujesz osiągnąć. Spodziewałbym się tej definicji lambda w miejscu, w którym używasz funkcji. Lub, że używasz odwołania do metody. Myślę, że kod, który masz teraz, obróci OBIEKT, którego funkcja również reprezentuje i utworzy ciąg znaków, który jest następnie przekazywany jako wejście do samej funkcji. Po prostu nie ma sensu. – GhostCat
Jaki jest wynik tego kodu? – jrook