@Shalom dlaczego jeśli nie pcham maina?
To co wysłał użytkownik nad Tobą. Kompiluje się.
Zastanawiam się tylko dlaczego tę lambdę mógł przypisać do "Secret", a nie Predicate<String> (czy coś podobnego).
W zasadzie tak jak w Twoim kodzie (zmodyfikowałem lekko):
interface Secret {
String magic(double d);
}
class Worker{
public void method(Secret s){
System.out.println(s.magic(1.0));
}
}
class MySecret {
public static void main(String[] args) {
Worker worker = new Worker();
Secret secret = d -> String.valueOf(d) + " cośtam";
worker.method(secret); //lambda zamiast anonimowego Secreta
}
}
A w takim przypadku przypisuje do Predykatu. To nie jest tak, że lambda jest jakby tym predykatem?
List<String> list = new ArrayList<>();
Predicate<String> stringPredicate = a -> a.isEmpty();
list.removeIf(stringPredicate);