Je ne sais pas pourquoi, mais le JLS est très clair:
Discussion
Note that null is not a legal element value for any element type.
Et la définition d'un élément par défaut est:
DefaultValue:
default ElementValue
Malheureusement, je continue de trouver que les nouvelles fonctionnalités du langage (Énumérations, et maintenant les Annotations) ont très peu serviable messages d'erreur du compilateur lorsque vous ne respectez pas la langue spec.
EDIT: UN peu googleing trouvé le suivant dans la JSR-308, où ils font valoir pour autoriser les valeurs null dans cette situation:
On note quelques objections à la proposition.
La proposition de ne pas faire quelque chose de possible qui n'était pas possible avant.
Le programmeur définie par une valeur spéciale fournit une meilleure documentation de la valeur null, ce qui pourrait signifier "none", "non initialisé", null lui-même, etc.
La proposition est plus enclin à l'erreur. Il est beaucoup plus facile d'oublier la vérification null que d'oublier de vérifier qu'une valeur explicite.
La proposition peut faire la norme de l'idiome plus verbeux. Actuellement, seuls les utilisateurs d'une annotation besoin de vérifier pour ses valeurs. Avec la proposition, de nombreux outils que les processus d'annotations devra vérifier si la valeur d'un champ est null, de peur de jeter une exception de pointeur null.
Je pense que seuls les deux derniers points sont pertinents à "pourquoi ne pas le faire en premier lieu." Le dernier point apporte certainement un bon point - un processeur d'annotation n'a jamais à être concernés qu'ils obtiendront une valeur null sur une annotation de la valeur. J'ai tendance à voir qu'à mesure que le travail d'annotation des transformateurs et d'autres cadre de ce type de code pour faire ce genre de vérifier les développeurs de code plus clair plutôt que l'inverse, mais il serait certainement difficile de justifier le changement.