Vodič za Java pakete

1. Uvod

U ovom brzom uputstvu pokriti ćemo osnove paketa u Javi. Vidjet ćemo kako stvoriti pakete i pristupiti vrstama koje postavljamo u njih.

Također ćemo razgovarati o konvencijama imenovanja i o tome kako se to odnosi na temeljnu strukturu direktorija.

Konačno, sastavit ćemo i pokrenuti naše pakirane Java klase.

2. Pregled Java paketa

U Javi mi koristite pakete za grupiranje povezanih klasa, sučelja i podpaketa.

Glavne prednosti ovog postupka su:

  • Olakšavanje pronalaska srodnih tipova - paketi obično sadrže vrste koje su logički povezane
  • Izbjegavanje sukoba imenovanja - paket će nam pomoći da jedinstveno identificiramo klasu; na primjer, mogli bismo imati com.baeldung.Aplikacija, kao i com.primjer.Prijava razreda
  • Kontrola pristupa - možemo kontrolirati vidljivost i pristup vrstama kombinirajući pakete i modifikatore pristupa

Dalje, pogledajmo kako možemo stvoriti i koristiti Java pakete.

3. Izrada paketa

Da biste stvorili paket, moramo koristiti paket izjavu dodavanjem kao prvi redak koda u datoteci.

Postavimo tip u paket s imenom com.baeldung.packages:

paket com.baeldung.packages;

Preporučuje se da svaku novu vrstu stavite u paket. Ako definiramo vrste i ne stavimo ih u paket, oni će ići u zadano ili neimenovani paket. Korištenje zadanih paketa ima nekoliko nedostataka:

  • Gubimo prednosti posjedovanja strukture paketa i ne možemo imati podpakete
  • Ne možemo uvesti vrste u zadanom paketu iz drugih paketa
  • The zaštićen i paket-privatni opseg pristupa bio bi besmislen

Kao što navodi specifikacija jezika Java, Java SE Platform pruža neimenovane pakete uglavnom radi praktičnosti pri razvoju malih ili privremenih aplikacija ili tek kada započinje razvoj.

Stoga, trebali bismo izbjegavati upotrebu neimenovanih ili zadanih paketa u stvarnim aplikacijama.

3.1. Konvencije o imenovanju

Kako bismo izbjegli pakete s istim imenom, slijedimo neke konvencije imenovanja:

  • mi definiramo naš paket imena u svim malim slovima
  • nazivi paketa su razgraničeni
  • imena su također određena pomoću tvrtka ili organizacija koja ih stvara

Da bismo odredili naziv paketa na temelju organizacije, obično započinjemo s okretanjem URL-a tvrtke. Nakon toga, tvrtka definira konvenciju imenovanja koja može uključivati ​​nazive podjela i nazive projekata.

Na primjer, za izradu paketa od www.baeldung.com, okrenimo to:

com.baeldung

Zatim možemo dalje definirati podpakete ovoga, poput com.baeldung.packages ili com.baeldung.packages.domena.

3.2. Struktura direktorija

Paketi u Javi odgovaraju strukturi direktorija.

Svaki paket i potpaket ima svoj direktorij. Dakle, za paket com.baeldung.packages, trebali bismo imati strukturu direktorija com -> baeldung -> paketi.

Većina IDE-a pomoći će u stvaranju ove strukture direktorija na temelju naših naziva paketa, tako da ih ne moramo stvarati ručno.

4. Korištenje članova paketa

Počnimo s definiranjem klase TodoItem u podpaketu s imenom domena:

paket com.baeldung.packages.domain; javna klasa TodoItem {private Long id; opis privatnog niza; // standardni geteri i postavljači}

4.1. Uvoz

Da bismo koristili naš TodoItem klasa iz klase u drugom paketu, moramo je uvesti. Nakon što se uvozi, možemo mu pristupiti po imenu.

Možemo uvesti jednu vrstu iz paketa ili upotrijebiti zvjezdicu za uvoz svih vrsta u paketu.

Uvezimo cijelu domena potpaket:

uvoz com.baeldung.packages.domain. *;

Uvozimo sada samo TodoItem razred:

import com.baeldung.packages.domain.TodoItem;

JDK i druge Java knjižnice također dolaze sa vlastitim paketima. Na isti način možemo uvesti već postojeće klase koje želimo koristiti u našem projektu.

Na primjer, uvezimo Java jezgru Popis sučelje i ArrayList razred:

import java.util.ArrayList; import java.util.List;

Tada možemo koristiti ove vrste u našoj aplikaciji jednostavnim korištenjem njihovog imena:

javna klasa TodoList {privatni popis todoItems; javna praznina addTodoItem (TodoItem todoItem) {if (todoItems == null) {todoItems = new ArrayList (); } todoItems.add (todoItem); }}

Ovdje smo koristili naše nove razrede zajedno s osnovnim klasama Java za stvaranje a Popis od ToDoItems.

4.2. Potpuno kvalificirano ime

Ponekad možda koristimo dvije klase s istim nazivom iz različitih paketa. Na primjer, možda koristimo oboje java.sql.Date i java.util.Datum. Kad naletimo na sukobe imenovanja, moramo koristiti potpuno kvalificirano ime klase za barem jednu od klasa.

Iskoristimo TodoItem s potpuno kvalificiranim imenom:

javna klasa TodoList {privatni popis todoItems; javna praznina addTodoItem (com.baeldung.packages.domain.TodoItem todoItem) {if (todoItems == null) {todoItems = new ArrayList (); } todoItems.add (todoItem); } // standardni getteri i postavljači}

5. Sastavljanje sa javac

Kada je vrijeme za kompajliranje naših zapakiranih klasa, moramo se sjetiti naše strukture direktorija. Počevši od izvorne mape, moramo to reći javac gdje pronaći naše datoteke.

Moramo sastaviti naš TodoItem razred prvo jer naš TodoList razred ovisi o tome.

Počnimo s otvaranjem naredbenog retka ili terminala i navigacijom do našeg izvornog direktorija.

A sad, kompajlirajmo naš com.baeldung.packages.domain.TodoItem razred:

> javac com / baeldung / paketi / domena / TodoItem.java

Ako se naša klasa čisti, nećemo vidjeti poruke o pogrešci i datoteku TodoItem.razred trebao pojaviti u našem com / baeldung / paketi / domena imenik.

Za tipove koji referenciraju tipove u drugim paketima, trebali bismo koristiti -razredna staza zastava za reći javac naredba gdje pronaći ostale prevedene klase.

Sad to naše TodoItem klasa je sastavljena, mi možemo sastaviti našu TodoList i TodoApp klase:

> javac -razredni put. com / baeldung / paketi / *. java

Opet, ne bismo trebali vidjeti poruke o pogrešci i trebali bismo pronaći dvije datoteke klase u našem com / baeldung / paketi imenik.

Pokrenimo našu aplikaciju koristeći potpuno kvalificirano ime našeg TodoApp razred:

> java com.baeldung.packages.TodoApp

Naš bi izlaz trebao izgledati ovako:

6. Zaključak

U ovom kratkom članku saznali smo što je paket i zašto bismo ga trebali koristiti.

Razgovarali smo o konvencijama imenovanja i o tome kako su paketi povezani sa strukturom direktorija. Također smo vidjeli kako stvoriti i koristiti pakete.

Napokon smo razmotrili kako kompajlirati i pokrenuti aplikaciju s paketima pomoću javac i Java naredbe.

Cjelovit primjer koda dostupan je na GitHubu.