Útmutató a Java csomagokhoz

1. Bemutatkozás

Ebben a gyors bemutatóban a Java-csomagok alapjait ismertetjük. Meglátjuk, hogyan lehet csomagokat létrehozni, és hogyan lehet elérni a bennük elhelyezett típusokat.

Megbeszéljük a névadási konvenciókat és annak kapcsolatát az alapul szolgáló könyvtárstruktúrával.

Végül összeállítjuk és futtatjuk a csomagolt Java osztályainkat.

2. A Java csomagok áttekintése

Java-ban mi csomagokat használhat a kapcsolódó osztályok, interfészek és alcsomagok csoportosításához.

Ennek fő előnyei:

  • A kapcsolódó típusok megkeresésének megkönnyítése - a csomagok általában logikusan kapcsolódó típusokat tartalmaznak
  • A névadási ütközések elkerülése - egy csomag segít abban, hogy egyedileg azonosítsunk egy osztályt; például lehet egy com.baeldung.Application, továbbá com.example.Application osztályok
  • Hozzáférés ellenőrzése - a láthatóságot és a típusokhoz való hozzáférést a csomagok és a hozzáférés-módosítók kombinálásával ellenőrizhetjük

Ezután nézzük meg, hogyan hozhatunk létre és használhatunk Java csomagokat.

3. Csomag létrehozása

Csomag létrehozásához használnunk kell a csomag utasítás hozzáadásával a fájl legelső kódsoraként.

Helyezzünk be egy típust egy nevű csomagba com.baeldung.packages:

csomag com.baeldung.packages;

Nagyon ajánlott minden új típust egy csomagba helyezni. Ha definiálunk típusokat, és nem helyezzük el őket egy csomagban, akkor azok a alapértelmezett vagy névtelen csomag. Az alapértelmezett csomagok használata néhány hátránnyal jár:

  • Elveszítjük a csomagszerkezet előnyeit, és nem lehetnek alcsomagjaink
  • Nem importálhatjuk az alapértelmezett csomagba tartozó típusokat más csomagokból
  • A védett és csomag-privát a hozzáférési hatókörök értelmetlenek lennének

Amint a Java nyelvi specifikáció kimondja, a meg nem nevezett csomagokat a Java SE Platform biztosítja elsősorban a kényelem érdekében, ha kicsi vagy ideiglenes alkalmazásokat fejlesztenek, vagy amikor a fejlesztés csak most kezdődik.

Ebből kifolyólag, kerülni kell a név nélküli vagy alapértelmezett csomagok használatát a valós alkalmazásokban.

3.1. Konvenciók elnevezése

Az azonos nevű csomagok elkerülése érdekében néhány elnevezési szokást követünk:

  • meghatározzuk a csomagunkat nevek minden kisbetűvel
  • a csomagnevek periódusokkal tagoltak
  • a neveket is meghatározza az őket létrehozó vállalat vagy szervezet

A csomag neve szervezet alapján történő meghatározásához általában azzal kezdjük, hogy megfordítjuk a vállalat URL-jét. Ezt követően a vállalat meghatározza az elnevezési megállapodást, amely tartalmazhatja a részlegek és a projektek nevét.

Például csomagot készíteni belőle www.baeldung.com, fordítsuk meg:

com.baeldung

Ezután tovább definiálhatjuk ennek al-csomagjait, mint a com.baeldung.packages vagy com.baeldung.packages.domain.

3.2. Könyvtár felépítése

A Java-csomagok megfelelnek egy könyvtárstruktúrának.

Minden csomagnak és alcsomagnak megvan a maga könyvtárja. Tehát, a csomagért com.baeldung.packages, a könyvtár struktúrájával kell rendelkeznünk com -> baeldung -> csomagok.

A legtöbb IDE segítséget nyújt ennek a könyvtárstruktúrának a létrehozására a csomagneveink alapján, ezért nem kell ezeket kézzel létrehoznunk.

4. Csomagtagok használata

Kezdjük egy osztály meghatározásával TodoItem nevű alcsomagban tartomány:

csomag com.baeldung.packages.domain; public class TodoItem {private Long id; privát karakterlánc leírása; // szabványos mérőeszközök és beállítók}

4.1. Behozatal

Annak érdekében, hogy a mi TodoItem osztály egy másik csomagban lévő osztályból, importálnunk kell. Az importálás után név szerint férhetünk hozzá.

Importálhatunk egyetlen típust egy csomagból, vagy csillaggal importálhatjuk a csomag összes típusát.

Importáljuk az egészet tartomány alcsomag:

import com.baeldung.packages.domain. *;

Most csak a TodoItem osztály:

import com.baeldung.packages.domain.TodoItem;

A JDK és más Java könyvtárak is saját csomagokkal érkeznek. Ugyanolyan módon importálhatunk már létező osztályokat, amelyeket a projektünkben használni szeretnénk.

Importáljuk például a Java magot Lista interfész és Tömb lista osztály:

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

Ezután ezeket a típusokat használhatjuk alkalmazásunkban, egyszerűen a nevükkel:

nyilvános osztály TodoList {private List todoItems; public void addTodoItem (TodoItem todoItem) {if (todoItems == null) {todoItems = new ArrayList (); } todoItems.add (todoItem); }}

Itt új osztályainkat és a Java alaposztályokat használtuk a Lista nak,-nek ToDoItems.

4.2. Teljesen minősített név

Előfordulhat, hogy két, ugyanazon névvel rendelkező osztályt használunk különböző csomagokból. Például használhatjuk mindkettőt java.sql.Date és java.util.Dátum. Amikor névütközésekbe ütközünk, legalább egy osztályhoz teljesen minősített osztálynevet kell használnunk.

Használjuk TodoItem teljesen minősített névvel:

nyilvános osztály TodoList {private List todoItems; public void addTodoItem (com.baeldung.packages.domain.TodoItem todoItem) {if (todoItems == null) {todoItems = new ArrayList (); } todoItems.add (todoItem); } // szokásos mérőeszközök és beállítók}

5. Összeállítása javac

Amikor eljött az ideje a csomagolt osztályaink összeállításának, emlékeznünk kell a könyvtárstruktúránkra. A forrás mappából indulva el kell mondanunk javac hol találjuk meg a fájljainkat.

Össze kell állítanunk a TodoItem osztály első, mert a mi Feladatlista osztály attól függ.

Kezdjük azzal, hogy megnyitunk egy parancssort vagy terminált, és navigálunk a forráskönyvtárunkhoz.

Most állítsuk össze com.baeldung.packages.domain.TodoItem osztály:

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

Ha osztályunk tisztán fordít, nem fogunk hibaüzenetet és fájlt látni TodoItem.class megjelenjen a mi com / baeldung / package / domain Könyvtár.

A más csomagokban szereplő típusokra hivatkozó típusoknál a -útvonal zászló mondani a javac parancs, ahol megtalálja a többi fordított osztályt.

Most, hogy a mi TodoItem osztály áll össze, összeállíthatjuk a mi Feladatlista és TodoApp osztályok:

> javac -classpath. com / baeldung / package / *. java

Ismét nem látunk hibaüzeneteket, és két osztályfájlt kell találnunk a könyvtárunkban com / baeldung / package Könyvtár.

Futtassuk az alkalmazásunkat a teljesen minősített név használatával TodoApp osztály:

> java com.baeldung.packages.TodoApp

Kimenetünknek így kell kinéznie:

6. Következtetés

Ebben a rövid cikkben megtudtuk, mi az a csomag, és miért kell használnunk őket.

Megbeszéltük a névadási konvenciókat és a csomagok kapcsolatát a könyvtárstruktúrával. Láttuk a csomagok létrehozásának és használatának módját is.

Végül áttekintettük, hogyan kell lefordítani és futtatni egy alkalmazást csomagokkal a javac és Jáva parancsokat.

A teljes példakód elérhető a GitHubon.