w tej klasie Java:Metoda Referencje jak w Java 8 Scala
import java.util.function.*;
public class T {
public String func(String a) {
System.out.println("There we go: " + a);
return a;
}
public static void main(String... args) {
final Supplier<T> c = T::new;
final BiFunction<T, String, String> f = T::func;
final T t = c.get();
final String v = f.apply(t, "something");
System.out.println(v);
}
}
mogę uzyskać odniesienie metoda konstruktora T
i do metody instancji func
.
Czy istnieje sposób, aby zrobić to samo w Scala, czyli dostać
val c:() => T = ??? // default constructor of T as function
val f: (T, String) => String = ??? // instance method func of T as function
bez zawijania je tak:
val c:() => T =() => new T
val f: (T, String) => String = (t, arg) => t.func(arg)
czyli jest jakiś sposób, który jest tak elegancki jak Java 8 sposób uzyskać odniesienia do konstruktora i metody instancji, aby uzyskać funkcje scala dla tych rzeczy?
Nie, nie możesz tego zrobić dokładnie. Zwykle nie musisz tego robić. Może być bardziej pomocny, jeśli wyjaśnisz, co naprawdę chcesz osiągnąć dzięki temu ... – Dima
W powyższym przykładzie wyrażenie "final Supplier c = T :: new;" jest semantycznie równoważne "val c: () => T =() => nowy T'. Nie jestem pewien, czego chciałbyś uniknąć. –
maasg