Вы можете просто поместить определенные цвета в объект-компаньон:
class Color(val red: Int, val blue: Int, val green: Int)
object Color {
object BLACK extends Color(0, 0, 0)
object WHITE extends Color(255, 255, 255)
object GREEN extends Color(0, 0, 255)
}
EDIT
В качестве альтернативы, вы можете иметь значения в объекте-компаньоне:
class Color(val red: Int, val blue: Int, val green: Int)
object Color {
val BLACK = new Color(0, 0, 0)
val WHITE = new Color(255, 255, 255)
val GREEN = new Color(0, 0, 255)
}
Вы можете сделать их ленивыми, чтобы отложить создание экземпляров, пока они не будут использованы:
class Color(val red: Int, val blue: Int, val green: Int)
object Color {
lazy val BLACK = new Color(0, 0, 0)
lazy val WHITE = new Color(255, 255, 255)
lazy val GREEN = new Color(0, 0, 255)
}
Возвращаясь к исходному решению, вы можете предотвратить расширение класса (имитируя «финал», сделав класс Color запечатанным:
sealed class Color(val red: Int, val blue: Int, val green: Int)
object Color {
object BLACK extends Color(0, 0, 0)
object WHITE extends Color(255, 255, 255)
object GREEN extends Color(0, 0, 255)
}