Равенство ссылок для java.lang.String в Scala

Можно было бы ожидать, что хотя строки неизменяемы, равенство значений и равенство ссылок не будут одинаковыми для объектов java.lang.String в Scala. Это означает, что два хранящих строки valне должны быть равны по ссылке, даже если их строки идентичны. Но вот что я получаю в 2.9.1.final REPL:

scala> val s1 = "a"; val s2 = "a"
s1: java.lang.String = a
s2: java.lang.String = a

scala> s1 eq s2
res0: Boolean = true

Любая идея, почему результат не был false? Тот же эксперимент с List("a")вместо "a"работает как положено. Метод eqпомечен как окончательный в AnyRef. Есть ли какая-то магия компилятора, сделанная специально для Stringили java.lang.String?

5
задан Oleg Mirzov 9 April 2012 в 10:50
поделиться