1 2 package annotations; 3 4 import java.lang.annotation.Retention; 5 import java.lang.annotation.RetentionPolicy; 6 7 8 /** 9 * Annotation declaration with different values 10 */ 11 @Retention(RetentionPolicy.RUNTIME) 12 public @interface ValuesAnnotation { 13 byte byteValue() default (byte) 255; 14 char charValue() default (char) 128; 15 boolean booleanValue() default true; 16 int intValue() default 10; 17 short shortValue() default (short) 20; 18 long longValue() default 100L; 19 float floatValue() default 10.0F; 20 double doubleValue() default 20.0D; 21 String stringValue() default "defaultString"; 22 23 Class classValue() default Values.class; 24 ValuesEnum enumValue() default ValuesEnum.ONE; 25 ValueAttrAnnotation annotationValue() default @ValueAttrAnnotation; 26 27 byte[] byteArrayValue() default {(byte) 128, (byte) 129}; 28 char[] charArrayValue() default { '1', '2'}; 29 boolean[] booleanArrayValue() default { true, false}; 30 int[] intArrayValue() default { 500, 501}; 31 short[] shortArrayValue() default { (short) 20000, (short) 2001}; 32 long[] longArrayValue() default { 101L, 102L}; 33 float[] floatArrayValue() default { 11.0F, 12.0F}; 34 double[] doubleArrayValue() default { 21.0D, 22.0D}; 35 String[] stringArrayValue() default { "11", "22"}; 36 37 ValuesEnum[] enumArrayValue() default { ValuesEnum.ONE, ValuesEnum.TWO}; 38 ValueAttrAnnotation[] annotationArrayValue() default { @ValueAttrAnnotation(), @ValueAttrAnnotation("1")}; 39 Class[] classArrayValue() default { Values.class, Values.class}; 40 41 } 42 43