estoy aprendiendo Scala, y no puedo encontrar la manera de expresar mejor esta clase de Java simple en Scala:Equivalente de campos public static final en Scala
public class Color {
public static final Color BLACK = new Color(0, 0, 0);
public static final Color WHITE = new Color(255, 255, 255);
public static final Color GREEN = new Color(0, 0, 255);
private final int red;
private final int blue;
private final int green;
public Color(int red, int blue, int green) {
this.red = red;
this.blue = blue;
this.green = green;
}
// getters, et cetera
}
Lo mejor que tengo es la siguiente:
class Color(val red: Int, val blue: Int, val green: Int)
object BLACK extends Color(0, 0, 0)
object WHITE extends Color(255, 255, 255)
object GREEN extends Color(0, 0, 255)
Pero pierdo las ventajas de tener BLANCO, NEGRO y VERDE vinculado al espacio de nombres Color.
(No soy una persona de Scala. ¿Eso funciona para las clases "finales"? –
No se puede extender una clase final, pero podría hacerlo "sellado" para que no se pueda extender fuera de la unidad de compilación actual . –