Вы можете указать значение по умолчанию для атрибута:
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType() default Object.class;
}
Нашел. Это не может быть необязательным, но значение по умолчанию может быть объявлено следующим образом:
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType() default String.class;
}
Если значение по умолчанию не может иметь смысла как «пустое» значение, то это проблема.