Scala записывает эти специальные символы как $ плюс, $ минус и т. Д. Вы можете убедиться в этом сами, запустив javap для scala.collection.immutable.HashSet.
Это позволяет вам делать код следующим образом:
Set s = new HashSet<String>();
s.$plus("one");
Не красиво, и на самом деле он не работает во время выполнения!Вы получаете 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!)
}
}
Разве это не прекрасно!так что, возможно, к тому времени вы сможете сделать
s = s.#"-"('GAH!')
Чтобы попробовать это, вам нужен scala-library.jar из папки lib / дистрибутива Scala.
Обновление : исправлен синтаксис Java 7, спасибо Мирко.