Jas*_*n S 8 java scala data-structures
那些熟悉Scala的人是否知道如何使用Java中的scala.collection.immutable.Set?我可以模糊地阅读scaladoc,但我不确定如何从java调用scala方法如" - "(我假设我只需要在我的类路径中包含一些scala .jar文件......?)
Scala将这些特殊符号写为$ plus,$ minus等.您可以通过对scala.collection.immutable.HashSet运行javap来自行查看.
这允许你做这样的代码:
Set s = new HashSet<String>();
s.$plus("one");
Run Code Online (Sandbox Code Playgroud)
不漂亮,它实际上并没有在运行时工作!你得到一个NoSuchMethodError.我猜这与这次讨论有关.使用他们讨论的解决方法,您可以使事情有效:
import scala.collection.generic.Addable;
import scala.collection.generic.Subtractable;
import scala.collection.immutable.HashSet;
import scala.collection.immutable.Set;
public class Test {
public static void main(String[] args) {
Set s = new HashSet<String>();
s = (Set<String>) ((Addable) s).$plus("GAH!");
s = (Set<String>) ((Addable) s).$plus("YIKES!");
s = (Set<String>) ((Subtractable) s).$minus("GAH!");
System.out.println(s); // prints Set(YIKES!)
}
}
Run Code Online (Sandbox Code Playgroud)
这不是一个美女!?
我相信Java 7将允许转义时髦的方法名称,所以也许到那时你就可以做到
s = s.#"-"('GAH!')
Run Code Online (Sandbox Code Playgroud)
要尝试此操作,您需要Scala发行版的lib /文件夹中的scala-library.jar.
更新:修复了Java 7语法,感谢Mirko.