Здесь на работе большинство людей используют Java, а я работаю со Scala. Мы решили собрать несколько общих классов в библиотеке, которая будет написана на Java. Теперь я хочу добавить псевдофункциональное программирование в библиотеку. Взгляните на следующее:
java:
public interface Func<A, R> {
public R f(a A);
}
public AClass {
public <R> ArrayList<R> myMethod(
Func<String, R> func
) {
// ...
}
}
использование в java:
AClass ac = new AClass();
ArrayList<String> al = ac.myMethod(
new Func<String, String> (
public String f(String s) {
return s + "!";
}
})
Вышеупомянутое не совсем завершается (на самом деле скорее пугающе, из Scala в перспективе). Есть ли способ вызвать некоторую магию scala, чтобы иметь возможность делать что-то вроде следующего в scala:
var ac = new ACLass
var al = ac.myMethod(str => str + "!") // alternative 1
al = ac.myMethod { case: str:String => str + "!" } // alternative 2
Я некоторое время возился с имплицитами, но не мог разобраться = P.