Примитивные и ссылочные типы в scala значительно меньше, чем в java, и поэтому соглашение заключается в том, что имя начинается с заглавных букв для всех из них.Double
- это scala.Double
, который является примитивом java double
, а не ссылкой java.lang.Double
.
Когда вам нужно «двойное или нулевое значение» в scala, вы будете использовать Option[Double]
большую часть времени.Опция имеет сильную поддержку библиотеки, и система типов не позволит вам игнорировать, что может не быть значения.Однако, когда вам нужно тесно взаимодействовать с java, как в вашем примере, ваша таблица содержит java.lang.Double, и вы должны сказать это так.
val a = new java.util.HashMap[String, java.lang.Double]
Если java.lang.Double
начинает появляться везде в вашем коде, вы можете создать псевдоним JDouble, импортировав
import java.lang.{Double => JDouble}
или определив
type JDouble = java.lang.Double
Есть неявные преобразования между scala.Double
и java.lang.Double
, поэтому взаимодействие должно быть достаточно плавным.Тем не менее, java.lang.Double
, вероятно, следует ограничить уровнем взаимодействия scala / java, было бы странно, если бы он углубился в код scala.