Me encontré con esta firma de método en la interfaz de componente de muelle.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface Component
{
String value() default "";
}
¿Qué es el método de firma String value() default "";
medios? ¿Cómo y Cuándo se debe definir como la sintaxis de codificación para nuestros propósitos?
Esta no es una firma de método. esto significa que usted puede pasar una cadena como parámetro para la anotación de componentes, así:
@Component(value = "value")
Si no se especifica un valor de su auto, se usará el valor por defecto "".
Si hubiera sido así:
String value(); // without the default
valor habría sido un parámetro obligatorio. Tratar de utilizar componentes de esta manera:
@Component()
daría lugar a una excepción, ya que usted no proporcionó un valor.
EDIT: cuándo utilizar.
Si usted no sabe mucho acerca de esta sintaxis, o anotaciones en general, no debe usarlos. Sobre todo lo que se pueda hacer uso de anotaciones, especialmente a medida queridos, también se puede hacer sin anotaciones.
Digamos que desea crear una anotación para validar el valor de un campo. Voy a usar el ejemplo de los códigos postales belgas. Todos ellos son 4 dígitos, y tienen entre 1000 y 9999.
@Target( {ElementType.FIELD})
@Retention( RetentionPolicy.RUNTIME)
@Constraint( validatedBy = ValidatePostalCodeImpl.class)
public @interface ValidatePostalCode{
String message() default "You have entered an invalid postal code";
Class<?>[] groups() default {}; // needed for the validation
Class<? extends Payload>[] payload() default{}; // needed for the validation
int maxValue() default 9999; // so, by default, this will validate based
int minValue() default 1000; // on these values, but you will be able to
// override these
}
/ * * Validación de aplicación /
public class ValidatePostalCodeImpl implements ConstraintValidator<ValidatePostalCode, Integer> {
int upperValue;
int lowerValue;
@Override
public void initialize(ValidatePostalCode validate) {
this.upperValue = validate.maxValue(); // here you call them as if they indeed were regular methods
this.lowerValue = validate.minValue();
}
@Override
public boolean isValid(Integer integer, ConstraintValidatorContext context) {
return integer >= lowerValue && integer <= upperValue;
}
}
/ * * Uso /
@Entity
@Table(name = "addresses")
public class Addresses {
// home address -> In Belgium, so has to be between the default values:
@ValidatePostalCode
Integer belgianPostalCode;
// vacation home in another country, let's say the PC's there are between
// 12000 and 50000
@ValidatePostalCode(minValue = 12000, maxValue = 50000)
Integer foreignPostalCode;
}
Sin duda, este es un ejemplo muy limitado, pero debe tener una idea.