Java 8, annotations de types et JSR 308

J’ai installé le dernier JDK 8 (b116) mais j’ai remarqué que je ne pouvais pas utiliser d’annotations de type. Par exemple, en lisant le tutoriel Java si j’écris:

Ssortingng str = null; Ssortingng mySsortingng = (@NonNull Ssortingng) str; 

ou

 TEST st = new @Interned TEST(); 

le compilateur me donne l’erreur suivante:

 annotation type not applicable to this kind of declaration 

Maintenant ça marche. Avant d’utiliser une annotation de type, nous devons l’annoter avec @Target(ElementType.TYPE_USE) . Regardez les commentaires ci-dessous!

Je ne comprends pas non plus si les annotations telles que: NonNull , NonNull , etc. seront insérées dans le JDK ou si nous devons télécharger le framework Checker.

Vous avez vous-même répondu à la première partie de votre question.

Pour la deuxième partie:

Je ne comprends pas non plus si les annotations telles que: NonNull , NonNull , etc. seront insérées dans le JDK ou si nous devons télécharger le Checker Framework.

Les annotations ne sont qu’une sorte de classe / interface Java. Ils doivent être définis dans le code source et compilés.

Idéalement, vous devriez avoir les fichiers de code source et / ou bytecode définitifs , obtenus à partir de la place canonique. Toutefois, si vous deviez reproduire les parties saillantes du code source des annotations (nom du package, nom de l’annotation, noms de champ et type) et le comstackr, le rest de la JVM n’en serait pas plus sage.

Mais lorsque vous parlez d’annotations spécifiques telles que @NonNull et @Interned , vous devez comprendre qu’il peut exister plusieurs versions de celles-ci dans différents packages. Cela pourrait causer des problèmes (pour le logiciel de traitement des annotations) jusqu’à ce que des versions standard / defacto apparaissent. Je ne sais pas si le framework Checkers pourrait être qualifié de standard de facto … pas encore.

Vous avez demandé si les annotations des vérificateurs seraient ajoutées à la bibliothèque Java 8. Personnellement, j’en doute, car le nom du package pour ces annotations serait inacceptable. Mais attendez et voyez …

Pour la deuxième partie:

Je ne comprends pas non plus si les annotations telles que: Non Null, Interned, etc. seront insérées dans le JDK ou si nous devons télécharger le Checker Framework.

Le JDK dissortingbué par Oracle ne contient pas d’annotations telles que @NonNull et @Interned – ni leur définition, ni leur occurrence dans les méthodes JDK.

Cependant, Checker Framework contient des versions annotées du JDK, comme expliqué dans le manuel de Checker Framework . Checker Framework vous permet d’utiliser la version définitive d’une bibliothèque au moment de l’exécution et même à la compilation, tandis que la vérification de type enfichable voit les annotations et donc les résultats de la vérification de type sont plus précis.