В этом классе Java:
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);
}
}
Я могу получить ссылку на метод конструктора T
и на метод экземпляра func
.
Есть ли способ сделать то же самое в scala, т.е. получить
val c: () => T = ??? // default constructor of T as function
val f: (T, String) => String = ??? // instance method func of T as function
не обертывая их так:
val c: () => T = () => new T
val f: (T, String) => String = (t, arg) => t.func(arg)
т. е. есть ли такой же элегантный способ, как способ Java 8, чтобы получить ссылки на конструктор и метод экземпляра для получения функций scala для этих вещей?
final Supplier<T> c = T::new;
семантически эквивалентноval c: () => T = () => new T
. Не уверен, чего вы хотели бы избежать. - person maasg   schedule 03.11.2016