Примитивные и ссылочные типы в scala гораздо меньше различаются, чем в java, и поэтому принято считать, что имена всех них начинаются с верхнего регистра. Double
- это scala.Double
, который является примитивным java double
, а не ссылкой java.lang.Double
.
Когда вам нужно «двойное или нулевое значение» в scala, вы будете использовать Option[Double]
большую часть времени. Option имеет сильную библиотечную поддержку, и система типов не позволит вам игнорировать то, что значение может отсутствовать. Однако, когда вам нужно тесно взаимодействовать с 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.
person
Didier Dupont
schedule
20.07.2011