Guide til Java-pakker

1. Introduksjon

I denne raske opplæringen vil vi dekke det grunnleggende om pakker i Java. Vi får se hvordan du lager pakker og får tilgang til typene vi plasserer i dem.

Vi vil også diskutere navnekonvensjoner og hvordan det er relatert til den underliggende katalogstrukturen.

Til slutt skal vi kompilere og kjøre de pakket Java-klassene våre.

2. Oversikt over Java-pakker

I Java, vi bruk pakker til å gruppere relaterte klasser, grensesnitt og underpakker.

De viktigste fordelene ved å gjøre dette er:

  • Gjør relaterte typer enklere å finne - pakker inneholder vanligvis typer som er logisk relaterte
  • Unngå navngivningskonflikter - en pakke vil hjelpe oss med å identifisere en klasse unikt; for eksempel kunne vi ha en com.baeldung.Application, i tillegg til com.example.Application klasser
  • Kontrollere tilgang - vi kan kontrollere synlighet og tilgang til typer ved å kombinere pakker og tilgangsmodifikatorer

La oss deretter se hvordan vi kan opprette og bruke Java-pakker.

3. Lage en pakke

For å lage en pakke, vi må bruke pakke uttalelse ved å legge den til som den aller første kodelinjen i en fil.

La oss plassere en type i en pakke som heter com.baeldung.packages:

pakke com.baeldung.packages;

Det anbefales sterkt å plassere hver nye type i en pakke. Hvis vi definerer typer og ikke plasserer dem i en pakke, vil de gå i misligholde eller ikke navngitt pakke. Bruk av standardpakker har noen ulemper:

  • Vi mister fordelene ved å ha en pakkestruktur, og vi kan ikke ha delpakker
  • Vi kan ikke importere typene i standardpakken fra andre pakker
  • De beskyttet og pakke-privat tilgangsomfang ville være meningsløst

Som Java-språkspesifikasjonen sier, leveres ikke-navngitte pakker av Java SE-plattformen, hovedsakelig for enkelhets skyld når du utvikler små eller midlertidige applikasjoner eller når du bare begynner utviklingen.

Derfor, vi bør unngå å bruke navnløse eller standardpakker i virkelige applikasjoner.

3.1. Navngivningskonvensjoner

For å unngå pakker med samme navn følger vi noen navnekonvensjoner:

  • vi definerer pakken vår navn i små bokstaver
  • pakkenavn er periodeavgrenset
  • navn bestemmes også av selskapet eller organisasjonen som skaper dem

For å bestemme pakkenavnet basert på en organisasjon, starter vi vanligvis med å reversere selskapets URL. Etter det er navnekonvensjonen definert av selskapet og kan inneholde divisjonsnavn og prosjektnavn.

For eksempel å lage en pakke av www.baeldung.comla oss snu det:

com.baeldung

Vi kan deretter definere underpakker av dette, som com.baeldung.packages eller com.baeldung.packages.domain.

3.2. Katalogstruktur

Pakker i Java samsvarer med en katalogstruktur.

Hver pakke og underpakke har sin egen katalog. Så for pakken com.baeldung.packages, bør vi ha en katalogstruktur på com -> baeldung -> pakker.

De fleste IDE-er vil hjelpe til med å lage denne katalogstrukturen basert på pakkenavnene våre, slik at vi ikke trenger å lage disse for hånd.

4. Bruke pakkemedlemmer

La oss starte med å definere en klasse TodoItem i en underpakke som heter domene:

pakke com.baeldung.packages.domain; offentlig klasse TodoItem {privat Lang id; privat strengbeskrivelse; // standard getters og setters}

4.1. Import

For å bruke vår TodoItem klasse fra en klasse i en annen pakke, må vi importere den. Når den er importert, kan vi få tilgang til den ved navn.

Vi kan importere en enkelt type fra en pakke eller bruke en stjerne til å importere alle typene i en pakke.

La oss importere hele domene underpakke:

import com.baeldung.packages.domain. *;

La oss nå bare importere TodoItem klasse:

importere com.baeldung.packages.domain.TodoItem;

JDK og andre Java-biblioteker leveres også med egne pakker. Vi kan importere eksisterende klasser som vi ønsker å bruke i prosjektet vårt på samme måte.

La oss for eksempel importere Java-kjernen Liste grensesnitt og ArrayList klasse:

importere java.util.ArrayList; importere java.util.List;

Vi kan da bruke disse typene i applikasjonen vår ved å bare bruke navnet deres:

offentlig klasse TodoList {privat liste todoItems; offentlig ugyldig addTodoItem (TodoItem todoItem) {if (todoItems == null) {todoItems = new ArrayList (); } todoItems.add (todoItem); }}

Her har vi brukt de nye klassene våre sammen med Java-kjerneklasser, for å lage en Liste av ToDoItems.

4.2. Fullt kvalifisert navn

Noen ganger bruker vi kanskje to klasser med samme navn fra forskjellige pakker. For eksempel bruker vi begge deler java.sql.dato og java.util.Date. Når vi støter på navngivningskonflikter, må vi bruke et fullt kvalifisert klassenavn for minst en av klassene.

La oss bruke TodoItem med et fullt kvalifisert navn:

offentlig klasse TodoList {privat liste todoItems; offentlig ugyldig addTodoItem (com.baeldung.packages.domain.TodoItem todoItem) {if (todoItems == null) {todoItems = new ArrayList (); } todoItems.add (todoItem); } // standard getters and setters}

5. Kompilering med javac

Når det er på tide å kompilere de pakkede klassene våre, må vi huske katalogstrukturen vår. Starter i kildemappen, må vi fortelle javac hvor du kan finne filene våre.

Vi må samle vårt TodoItem klasse først fordi vår Gjøremålsliste klasse avhenger av det.

La oss starte med å åpne en kommandolinje eller terminal og navigere til kildekatalogen vår.

La oss nå lage våre com.baeldung.packages.domain.TodoItem klasse:

> javac com / baeldung / packages / domain / TodoItem.java

Hvis klassen vår kompilerer rent, ser vi ingen feilmeldinger og en fil TodoItem.class skal vises i vår no / baeldung / packages / domain katalog.

For typer som refererer til typer i andre pakker, bør vi bruke -klassesti flagg for å fortelle javac kommandoen hvor du skal finne de andre kompilerte klassene.

Nå som vår TodoItem klassen er samlet, kan vi kompilere vår Gjøremålsliste og TodoApp klasser:

> javac-klassesti. com / baeldung / pakker / *. java

Igjen, vi skal ikke se noen feilmeldinger, og vi bør finne to klassefiler i vår com / baeldung / pakker katalog.

La oss kjøre søknaden vår ved å bruke det fullt kvalifiserte navnet på vårt TodoApp klasse:

> java com.baeldung.packages.TodoApp

Produksjonen vår skal se slik ut:

6. Konklusjon

I denne korte artikkelen lærte vi hva en pakke er og hvorfor vi bør bruke dem.

Vi diskuterte navngivningskonvensjoner og hvordan pakker forholder seg til katalogstrukturen. Vi så også hvordan du oppretter og bruker pakker.

Til slutt gikk vi over hvordan du kompilerer og kjører et program med pakker ved hjelp av javac og java kommandoer.

Hele eksempelkoden er tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found