– Cześć, Amigo! Dzisiaj porozmawiamy o pakietach.
– Pliki na komputerze są pogrupowane w foldery. Klasy w Javie (każda klasa jest przechowywana w oddzielnym pliku) są pogrupowane w pakiety, które są jak foldery na twardym dysku. Właściwie, żadna nowość. Chciałbym jednak podkreślić dwie rzeczy.
– Po pierwsze, unikalna, pełna nazwa klasy składa się z nazwy jej pakietu i nazwy klasy. Oto kilka przykładów:
Unikalna, pełna nazwa | Nazwa pakietu | Nazwa klasy |
---|---|---|
java.io.FileInputStream | java.io | FileInputStream |
java.lang.String | java.lang | String |
java.util.ArrayList | java.util | ArrayList |
org.apache.tomcat.Servlet | org.apache.tomcat | Servlet |
Kot | Nieokreślony | Kot |
– Pełna nazwa klasy jest zawsze unikalna.
Byłoby niewesoło, gdybyśmy musieli pisać za każdym razem pełną nazwę, np. java.util.ArrayList. To dlatego Java pozwala importować klasy. Możesz używać skróconych nazw innych klas w swoim kodzie, ale na początku swojej klasy musisz jednoznacznie wskazać, których klas będziesz używać.
– Ale jak to zrobić?
– Na przykład za pomocą takiej linii: import java.util.ArrayList;
– Na początku klasy, zaraz po zadeklarowaniu pakietu, wskazujesz, do której klasy się odnosisz, kiedy używasz w swoim kodzie ArrayList.
– Po co to sobie komplikować? Czy klasy mogą mieć identyczne nazwy?
– Tak. Mogą istnieć klasy o takiej samej nazwie w różnych pakietach. Nie możemy jednak importować dwóch klas o takiej samej nazwie, więc musielibyśmy jedną z nich nazwać jej pełną nazwą.
– Dam Ci analogiczny przykład. Masz kolegę o imieniu Jaś. Żaden problem: każdy wie, o kogo chodzi. Ale gdyby w Twoim biurze było trzech Jasiów, musiałbyś nazywać ich imieniem i unikalnym nazwiskiem, by uniknąć zamieszania.
– Po drugie, zawsze jest lepiej umieszczać klasy w pakietach, a nie w folderze root src. Jeśli nie masz wielu klas, to nie jest problem, ale jeśli jest inaczej, łatwo je pomylić. Zawsze twórz klasy wewnątrz pakietów.
W Javie powszechną praktyką jest nadawanie klasom i pakietom znaczących nazw. Wiele firm wypuszcza swe biblioteki (zestawy klas) i nazywa je nazwą firmy czy strony internetowej, żeby nie wprowadzać zamieszania:
Nazwa pakietu | Nazwa firmy/projektu |
---|---|
org.apache.common org.apache.tomcat org.apache.util |
Apache |
com.oracle.jdbc | Oracle |
java.io javax.servlet |
Sun, Java |
com.ibm.websphere | IBM, WebSphere |
com.jboss | JBoss |
GO TO FULL VERSION