Esta es una pregunta un poco vieja, pero pensé que contribuiría con mis 2 centavos de todos modos, ya que este hilo salió a la conversación hoy.
Esto no responde exactamente por qué no hay constante? pero cómo hacer que tus clases sean inmutables. (Desafortunadamente aún no tengo suficiente reputación para publicar como un comentario a la respuesta aceptada)
La forma de garantizar la inmutabilidad de un objeto es diseñar sus clases con más cuidado para que sean inmutables. Esto requiere un poco más de cuidado que una clase mutable.
Esto se remonta a la efectiva Java de Josh Bloch artículo 15 de : minimizar la mutabilidad . Si no ha leído el libro, tome una copia y léala varias veces. Le garantizo que mejorará su figurado "juego de Java" .
En el elemento 15, Bloch sugiere que debe limitar la mutabilidad de las clases para garantizar el estado del objeto.
Para citar el libro directamente:
Una clase inmutable es simplemente una clase cuyas instancias no se pueden modificar. Toda la información contenida en cada instancia se proporciona cuando se crea y se fija durante la vida útil del objeto. Las bibliotecas de la plataforma Java contienen muchas clases inmutables, incluidas String, las clases primitivas en caja y BigInteger y BigDecimal. Hay muchas buenas razones para esto: las clases inmutables son más fáciles de diseñar, implementar y usar que las clases mutables. Son menos propensos a errores y son más seguros.
Bloch luego describe cómo hacer que sus clases sean inmutables, siguiendo 5 reglas simples:
- No proporcione ningún método que modifique el estado del objeto (es decir, establecedores, también conocidos como mutadores )
- Asegúrese de que la clase no se pueda extender (esto significa declarar la clase como tal
final
).
- Hacer todos los campos
final
.
- Hacer todos los campos
private
.
- Garantice el acceso exclusivo a cualquier componente mutable. (haciendo copias defensivas de los objetos)
Para más detalles, recomiendo recoger una copia del libro.
const
palabra clave, pero no hay ninguna característica subyacente. Corregido su título y etiquetas en consecuencia.