Java 8, Typ Anmerkungen und JSR 308

8

Ich habe das letzte JDK 8 (b116) installiert, aber ich habe festgestellt, dass ich keine Typ Anmerkungen verwenden kann. Zum Beispiel das Java-Tutorial zu lesen, wenn ich schreibe:

%Vor%

oder

%Vor%

Der Compiler gibt mir den folgenden Fehler:

%Vor%

Jetzt funktioniert es. Vor der Verwendung von Typ-Annotationen müssen wir die Annotation mit Anmerkungen versehen mit @Target(ElementType.TYPE_USE) . Sehen Sie sich die Kommentare unten an!

Ich verstehe auch nicht, ob die Annotationen wie: NonNull , Interned usw. sein werden eingefügt in das JDK oder wenn wir das Checker-Framework

herunterladen müssen     
xdevel2000 25.11.2013, 15:56
quelle

2 Antworten

5

Sie haben den ersten Teil Ihrer Frage selbst beantwortet.

Für den zweiten Teil:

  

Ich verstehe auch nicht, wenn die Annotationen wie: NonNull , Interned usw. in das JDK eingefügt werden oder wenn wir das Checker Framework herunterladen müssen.

Anmerkungen sind nur eine Art Java-Klasse / Schnittstelle. Sie müssen im Quelltext definiert und kompiliert werden.

Idealerweise sollten Sie den definitiven Quellcode und / oder die Bytecodedateien, die Sie vom kanonischen Ort erhalten haben, verwenden. Wenn Sie jedoch die hervorstechenden Teile des Quellcodes der Annotationen (den Paketnamen, den Annotationsnamen, die Feldnamen und den Typ) reproduzieren und kompilieren würden, wäre der Rest der JVM nicht klüger.

Aber wenn Sie über bestimmte Annotationen wie @NonNull und @Interned sprechen, müssen Sie erkennen, dass es mehrere Versionen davon in verschiedenen Paketen geben könnte. Dies könnte Probleme (für Annotationsverarbeitungssoftware) verursachen, bis Standard / Defacto-Standardversionen auftauchen. Ich weiß nicht, ob das Checkers-Framework als Defacto-Standard bezeichnet werden könnte ... bis jetzt.

Sie haben gefragt, ob die Checker-Annotationen zur Java 8-Bibliothek hinzugefügt werden. Ich persönlich bezweifle das, weil der Paketname für diese Anmerkungen inakzeptabel wäre. Aber warte und sieh ...

    
Stephen C 26.11.2013, 10:32
quelle
4

Für den zweiten Teil:

  

Ich verstehe auch nicht, wenn die Anmerkungen wie: NonNull, Interned,   usw. wird in das JDK eingefügt oder wenn wir den Checker herunterladen müssen   Rahmen.

Das von Oracle verteilte JDK enthält keine Annotationen wie @NonNull und @Interned - weder Definitionen noch Vorkommen von ihnen in JDK-Methoden.

Das Checker Framework enthält jedoch annotierte Versionen des JDK, wie im Handbuch Checker Framework erläutert. Mit dem Checker-Framework können Sie die endgültige Version einer Bibliothek zur Laufzeit und sogar zur Kompilierzeit verwenden, während bei der steckbaren Typüberprüfung die Anmerkungen und damit die Typüberprüfungsergebnisse präziser angezeigt werden.

    
mernst 30.09.2014 12:56
quelle

Tags und Links