Es necesario específicamente en el modelo de marco de Java Bean, pero no es obligatorio en general.
Puede tener setter sin argumentos cuando están destinados a "swith" un valor.
void setCheck()
podría ser, por ejemplo destinado a establecer el "cheque" atributo booleano true.
Por lo tanto, incluso si no es un "setter" en el sentido de Java Bean del término, se puede imaginar el colocador utilizado para otros fines.
Además, según el artículo 7 de las especificaciones JavaBean, un regulador puede tener más de un argumento, por ejemplo, para propiedades indizadas (Una propiedad indexada soporta un rango de valores. Siempre que la propiedad se lee o se escribe sólo tiene que especificar un índice para identificar qué valor que desee.)
void setter(int index, PropertyType value); // indexed setter
void setter(PropertyType values[]); // array setter
En su caso, un enfoque válido sería añadir un runtime exception a la firma de nuestra función.
De esta manera no pone ninguna verificación de excepción de tiempo de compilación innecesaria para todas las otras clases que ya están llamando a su instalador.
O bien, podría considerar su propiedad como Restricción de la propiedad y agregar una excepción no de tiempo de ejecución.
Se requieren métodos restringidos de configuración de propiedades para admitir PropertyVetoException. Esto documenta a los usuarios de la propiedad restringida que las actualizaciones intentadas pueden ser vetadas. Así un simple propiedad restringida podría ser:
PropertyType getFoo();
void setFoo(PropertyType value) throws PropertyVetoException;
que permite VetoableChangeListener que se añade si es necesario.
En cuanto a su fragmento, que es "válido", pero puede no ser óptima debido a que (como se ha dicho en this question):
- validación debe ser capturada por separado de getters o setters en un método de validación . De esta forma, si la validación debe reutilizarse en múltiples componentes, está disponible.
- Es mejor fail fast (de ahí mi proposición de agregar excepción al setter).
Véase también http://stackoverflow.com/questions/2750/data-verifications-in-gettersetter-or- elsewhere – VonC
Muchas gracias. – DragonBorn
Acaba de agregar una respuesta a su fragmento – VonC