2012-05-20 16 views
7

jre viene fornito con molte librerie in rt.jar una delle quali è com.sun.istack.internal *. Avevo bisogno della documentazione di com.sun.istack.internal.Nullable ( che ho trovato usata da google nel suo CacheBuilder ) e pensavo prima di andare su docs.oracle.com per trovare la sua documentazione e lì non ho trovato nulla a proposito. Successivamente è andato alla cartella sorgente originata da jdk e non ho trovato l'entità nome com nella suddetta cartella. Quindi guardo la versione di jre7 e do un'occhiata a tutti i pacchetti e alla classe e non ho trovato alcun riferimento a Nullable lì. Sebbene SO avesse uno mention of it, ma niente di concreto. Sono ancora perplesso su dove ottenere la sua documentazione e src se necessario. Ho persino guardato la documentazione dell'API del sole in oracolo, ma non ho menzionato nulla a riguardo. dove oracle documenta la politica sui pacchetti portati e il loro essere standard o non standard. Devono averlo documentato da qualche parte, è solo che sto impiegando troppo tempo per arrivarci.rt.jar pacchetti com.sun.istack.internal

Per favore indicatemi.

MODIFICA: in realtà la javax.annotation.Nullable viene utilizzata in google CacheBuilder e non in com.sun.istack.internal.Nullable. Anche per qualcuno che potrebbe affrontare questo problema: javax.annotation.Nullable non fa parte di Java SE a partire da ora e viene portato in jsr305 jar. Quindi, se stai pensando di usare CacheBuilder o semplicemente di leggere il suo codice, aggiungi jsr305 jar nel tuo percorso di classe, altrimenti eclissi si confonderà e ti punterà a com.sun.istack.intenal.Nullable quando passi il cursore su Nullable .

+0

Credo che sia solo un'interfaccia marcatore. L'unico commento nel file sorgente dice proprio questo. – Thihara

+0

In realtà è un'annotazione - 'public @interface Nullable' –

risposta

5

Ecco un link al codice sorgente:

(Questo collegamento può rompere in futuro, ma si dovrebbe essere in grado di trovare un equivalente utilizzando una ricerca su Google.)

La ragione per cui non è possibile trovare il codice sorgente o javadocs nelle distribuzioni JDK/JRE standard è che questa è una classe INTERNAL. C'è una politica Oracle/Sun di vecchia data che scoraggia gli sviluppatori dalla scrittura di codice che dipende dalle classi interne Java.

FWIW - questa è solo un'annotazione e il significato è praticamente ciò che il nome della classe implica.


UPDATE - A quanto pare, la vera causa di questa confusione è che non hai incluso il vaso JSR305 nel vostro buildpath. È una dipendenza per CacheBuilder. Il completamento del nome di classe Eclipse sta facendo del suo meglio ... ma fallendo.

+0

È stato scritto da Kohsuke Kawaguchi! Da quando scriveva il codice per il JDK? –

+0

Ha lavorato a Sun prima che fosse acquistato da Oracle. Perché non dovrebbe scrivere il codice per il JDK? Hudson Jenkins è stato scritto nel suo tempo libero, AFAIK. –

+0

Grazie, so che è un'annotazione. E anche allora ci piacerebbe avere la sua documentazione. Riferisci il commento a JB Nizet Post. – mawia

12

Guava non utilizza com.sun.istack.internal.Nullable. Tutto ciò che non è documentato nel javadoc Java SE ufficiale è codice interno e non deve essere utilizzato nelle applicazioni.

Probabilmente stai cercando javax.annotation.Nullable, che fa parte di JSR305.

+0

@Override public boolean equals (@Nullable Object obj) { if (this == obj) { return true; } Uno snippet di com.google.common.base.Equivalence ed Equivalence sono pieni di utilizzo di questa annotazione. – mawia

+0

Vedere http://docs.guava-libraries.googlecode.com/git-history/v12.0/javadoc/src-html/com/google/common/base/Equivalence.html#line.26: javax.annotation. Nullabile, proprio come te l'ho detto. –

+0

Bene, javax.annotation.Nullable non sembra essere fornito da JSE, ma è presente in JSR305, eclipse si è terribilmente confuso (passando il cursore sopra Nullable, verrà indirizzato a com.sun.istack.internal.Nullable), dato che non ho avuto jsr305. Poiché non è stato possibile risolvere javax.annotaion.Nullable, ha confuso Nullable come quello di com.sun.istack.internal.Nullable. – mawia