2012-05-20 10 views
7

jre zawiera wiele bibliotek w rt.jar, z których jednym jest com.sun.istack.internal *. Potrzebowałem dokumentacji com.sun.istack.internal.Nullable ( , którą znalazłem, używaną przez google w jej CacheBuilder ) i najpierw pomyślałem, aby przejść do docs.oracle.com, aby znaleźć jego dokumentację i tam nie znalazłem nic o tym. Następnie poszedłem do folderu źródłowego z jdk i nie znalazłem nazwy podmiotu w tym folderze. Następnie przyjrzałem się wersji jre7 i przyjrzałem się wszystkim paczkom i klasom i nie znalazłem tam wzmianki o Nullable. Chociaż SO miał jeden mention of it, ale nic konkretnego. Wciąż jestem zaintrygowany, skąd wziąć jego dokumentację i src, jeśli to konieczne. Nawet wyglądałem na legendarną dokumentację Sun api w wyroczni, ale nic o tym nie wspomniałem. gdzie oracle dokumentuje zasady dotyczące pakietów przeniesionych i ich standard lub nie-standard. Musi to udokumentować gdzieś po prostu, że poświęcam zbyt dużo czasu, aby się tam dostać.rt.jar com.sun.istackinternal packages

Proszę wskazać mi tam.

EDYCJA: W rzeczywistości javax.annotation.Nullable jest używany w google CacheBuilder, a nie com.sun.istack.internal.Nullable. Również dla kogoś, kto może napotkać ten problem: javax.annotation.Nullable nie jest obecnie częścią Java SE i jest przenoszony w słoju jsr305. Więc jeśli planujesz użyć CacheBuilder lub po prostu przechodząc przez jego kod, dodaj jar jsr305 w ścieżce klasy, w przeciwnym razie eclipse się pomyli i wskaże ci com.sun.istack.intenal.Nullable, gdy tylko najedziesz kursorem na Nullable .

+0

Uważam, że to tylko interfejs znacznika. Jedyny komentarz w pliku źródłowym mówi właśnie to. – Thihara

+0

To jest właściwie adnotacja - 'public @interface Nullable' –

Odpowiedz

5

Tu jest link do kodu źródłowego:

(Ten link może pęknąć w przyszłości, ale powinieneś być w stanie znaleźć odpowiednik za pomocą wyszukiwarki Google).

Powodem, dla którego nie można znaleźć kodu źródłowego lub javadocs w standardowych dystrybucjach JDK/JRE jest to, że jest to klasa INTERNAL. Istnieje długoletnia polityka Oracle/Sun zniechęcająca programistów do pisania kodu, który jest zależny od wewnętrznych klas Java.

FWIW - to tylko adnotacja, a znaczenie jest tym, co sugeruje nazwa klasy.


UPDATE - Wydaje się, że prawdziwą przyczyną tego zamieszania jest to, że nie zawiera w swoim słoik JSR305 buildpath. Jest to zależność dla CacheBuilder. Realizacja nazwy klasy Eclipse działa najlepiej, ale kończy się niepowodzeniem.

+0

Została napisana przez Kohsuke Kawaguchi! Od kiedy pisał kod do JDK? –

+0

Pracował w firmie Sun, zanim został kupiony przez Oracle. Dlaczego nie napisałby kodu dla JDK? Hudson Jenkins został napisany w wolnym czasie, AFAIK. –

+0

Dzięki, wiem, że to adnotacja. I nawet wtedy chcielibyśmy mieć jego dokumentację. Poleć komentarz do postu JB Nizet. – mawia

12

Guava nie używa com.sun.istack.internal.Nullable. Wszystko, co nie jest udokumentowane w oficjalnym javadoc Java SE, jest wewnętrznym kodem i nie powinno być używane w aplikacjach.

Prawdopodobnie szukasz javax.annotation.Nullable, która jest częścią JSR305.

+0

@Override public boolean equals (@Nullable Object obj) { if (this == obj) { return true; } Jeden fragment z com.google.common.base.Equivalence and Equivalence w pełni korzysta z tej adnotacji. – mawia

+0

Zobacz http://docs.guava-libraries.googlecode.com/git-history/v12.0/javadoc/src-html/com/google/common/base/Equivalence.html#line.26: javax.annotation. Nullable, tak jak ci mówiłem. –

+0

Cóż, javax.annotation.Nullable nie wydaje się być dostarczony przez JSE, ale jest tam w JSR305, eclipse się strasznie myli (kursor na Nullable, to wskaże ci com.sun.istack.internal.Nullable), ponieważ nie miałem jsr305. Ponieważ nie udało się rozwiązać problemu javax.annotaion.Nullable, pomieszało to Nullable z com.sun.istack.internal.Nullable. – mawia

Powiązane problemy