2014-12-26 19 views
5

(Disclaimer:. Sono nuovo di Java e anche, ho letto la relativa SO question)Java istruzione import con * non raccogliendo classe

Ho il seguente codice:

import org.apache.pdfbox.pdmodel.*; 
... 
PDFont font = PDType1Font.HELVETICA_BOLD; 

Ma la La classe PDFont non viene riconosciuta in Eclipse.

Quando aggiungo il seguente:

import org.apache.pdfbox.pdmodel.font.PDFont; 

Il PDFont classe viene prelevato.

Dato che la classe PDFont si trova sotto la gerarchia specificata nella prima istruzione import che termina con l'asterisco, perché è necessaria una specifica istruzione di importazione?

Inoltre, c'è un modo per cercare la posizione di una classe in una libreria se non si ha a portata di mano la documentazione?

risposta

12

The on demand import declarations are not recursive

una dichiarazione di tipo-import-on-demand consente tutti i tipi accessibili di un nome pacchetto o il tipo da importare, se necessario.

tuo tipo PDFont è nel pacchetto

org.apache.pdfbox.pdmodel.font 

ma hai provato a importare

import org.apache.pdfbox.pdmodel.*; 

il pacchetto org.apache.pdfbox.pdmodel non contiene un tipo di nome PDFont.

Così, in alternativa, si potrebbe avere utilizzato

import org.apache.pdfbox.pdmodel.font.*; 

Inoltre, c'è un modo per cercare la posizione di una classe in una libreria se non si ha la documentazione maneggevole?

Se la libreria è pubblicata come .jar, è possibile decomprimerla e cercare attraverso di essa.

La maggior parte degli IDE ha tipicamente una funzione per cercare i tipi con il loro nome semplice. Ad esempio, in Eclipse, è possibile utilizzare CTRL (cmd) + SHIFT + T e digitare il nome semplice o completo per la ricerca (se si trova sul classpath).

+0

Vedo, riprende solo ciò che è a quel livello (pdmodel) e non recurse. Grazie mille, accetterà quando SO, lasciami fare. – Sabuncu

+0

@Sabuncu È importante notare che non esiste una gerarchia intrinseca nei nomi di 'pacchetto'. È semplicemente più facile per gli sviluppatori "nidificarli" in questo modo. –

+0

Capito, grazie. E la mia seconda (minore) domanda? ;-) – Sabuncu

Problemi correlati