מדריך לחבילות Java

1. הקדמה

במדריך מהיר זה נסקור את יסודות החבילות בג'אווה. נראה כיצד ליצור חבילות ולגשת לסוגים שאנו מציבים בתוכם.

נדון גם במוסכמות שמות וכיצד זה קשור למבנה הספריות הבסיסי.

לבסוף, נאסוף ונפעיל את שיעורי Java הארוזים שלנו.

2. סקירה של חבילות Java

בג'אווה, אנחנו השתמש בחבילות כדי לקבץ כיתות, ממשקים וחבילות משנה קשורות.

היתרונות העיקריים בכך הם:

  • הפעלת קל יותר למצוא סוגים קשורים - חבילות מכילות בדרך כלל סוגים שקשורים לוגית
  • הימנעות מעימותי שמות - חבילה תעזור לנו לזהות ייחודי כיתה; למשל, יכול להיות שיש לנו com.baeldung. יישום, בנוסף ל com.example. יישום שיעורים
  • בקרת גישה - אנו יכולים לשלוט בחשיפה ובגישה לסוגים על ידי שילוב חבילות ומשכיני גישה

לאחר מכן, בואו נראה כיצד נוכל ליצור ולהשתמש בחבילות Java.

3. יצירת חבילה

כדי ליצור חבילה, עלינו להשתמש ב- חֲבִילָה הצהרה על ידי הוספתה כשורת הקוד הראשונה בקובץ.

בואו נשים סוג בחבילה בשם com.baeldung.packages:

חבילה com.baeldung.packages;

מומלץ מאוד למקם כל סוג חדש בחבילה. אם נגדיר סוגים ולא נשים אותם בחבילה, הם ייכנסו ל בְּרִירַת מֶחדָל או חבילה ללא שם. השימוש בחבילות ברירת מחדל כולל כמה חסרונות:

  • אנו מאבדים את היתרונות שיש מבנה חבילה ואנחנו לא יכולים לקבל חבילות משנה
  • איננו יכולים לייבא את הסוגים בחבילה המוגדרת כברירת מחדל מחבילות אחרות
  • ה מוּגָן ו חבילה-פרטית היקפי גישה יהיו חסרי משמעות

כפי שקובע המפרט של שפת Java, חבילות ללא שם מסופקות על ידי פלטפורמת Java SE בעיקר לנוחיותכם בעת פיתוח יישומים קטנים או זמניים או כשרק מתחילים בפיתוח.

לָכֵן, עלינו להימנע משימוש בחבילות ללא שם או ברירת מחדל ביישומים בעולם האמיתי.

3.1. מוסכמות שמות

על מנת להימנע מחבילות עם אותו שם, אנו מקיימים כמה מוסכמות למתן שמות:

  • אנו מגדירים את החבילה שלנו שמות בכל אותיות קטנות
  • שמות החבילה מוגדרים לתקופות
  • שמות נקבעים גם על ידי החברה או הארגון שיוצרים אותם

כדי לקבוע את שם החבילה על בסיס ארגון, בדרך כלל נתחיל בהיפוך כתובת ה- URL של החברה. לאחר מכן, מוסכמת השמות מוגדרת על ידי החברה ועשויה לכלול שמות חלוקה ושמות פרויקטים.

לדוגמא, להכין חבילה www.baeldung.comבואו נהפוך את זה:

com.baeldung

לאחר מכן נוכל להגדיר עוד יותר חבילות משנה של זה, כמו com.baeldung.packages אוֹ com.baeldung.packages.domain.

3.2. מבנה מדריך

חבילות ב- Java תואמות את מבנה הספריות.

לכל חבילה וחבילה משנה יש ספרייה משלה. אז, לחבילה com.baeldung.packages, עלינו להיות בעל מבנה ספריות של com -> baeldung -> חבילות.

רוב ה- IDE יסייעו ביצירת מבנה ספריה זה על סמך שמות החבילות שלנו, כך שאיננו צריכים ליצור אותם ביד.

4. שימוש בחברי חבילה

נתחיל בהגדרת כיתה TodoItem במארז משנה בשם תְחוּם:

חבילה com.baeldung.packages.domain; מחלקה ציבורית TodoItem {פרטי מזהה ארוך; תיאור מחרוזת פרטי; // סטרים וקובעים סטנדרטיים}

4.1. יבוא

על מנת להשתמש שלנו TodoItem בכיתה מחלקה בחבילה אחרת, עלינו לייבא אותה. לאחר ייבואו, אנו יכולים לגשת אליו לפי שם.

אנו יכולים לייבא סוג אחד מחבילה או להשתמש בכוכבית כדי לייבא את כל הסוגים בחבילה.

בואו נייבא את כולו תְחוּם חבילת משנה:

יבוא com.baeldung.packages.domain. *;

עכשיו, בואו נייבא רק את TodoItem מעמד:

יבוא com.baeldung.packages.domain.TodoItem;

JDK וספריות Java אחרות מגיעות גם עם חבילות משלהן. אנו יכולים לייבא שיעורים קיימים בהם נרצה להשתמש בפרויקט שלנו באותו אופן.

לדוגמא, בואו נייבא את ליבת Java רשימה ממשק ו רשימת מערך מעמד:

ייבא java.util.ArrayList; ייבא java.util.List;

לאחר מכן נוכל להשתמש בסוגים אלה ביישום שלנו פשוט על ידי שימוש בשמם:

מחלקה ציבורית TodoList {רשימת פרטי todoItems; בטל ציבורי addTodoItem (TodoItem todoItem) {if (todoItems == null) {todoItems = ArrayList חדש (); } todoItems.add (todoItem); }}

כאן השתמשנו בשיעורים החדשים שלנו יחד עם שיעורי הליבה של Java, כדי ליצור רשימה שֶׁל ToDoItems.

4.2. שם מוסמך לחלוטין

לפעמים, אנו עשויים להשתמש בשתי מחלקות עם אותו שם מחבילות שונות. לדוגמה, אנו עשויים להשתמש בשניהם java.sql.Date ו java.util.Date. כאשר אנו נתקלים בעימותי שמות, עלינו להשתמש בשם מחלקה מוסמך לחלוטין לפחות לאחת הכיתות.

בואו נשתמש TodoItem עם שם מלא:

מחלקה ציבורית TodoList {רשימה פרטית todoItems; חלל ציבורי addTodoItem (com.baeldung.packages.domain.TodoItem todoItem) {if (todoItems == null) {todoItems = ArrayList חדש (); } todoItems.add (todoItem); } // גטרים וקובעים סטנדרטיים}

5. קומפילציה עם ג'אוואק

כאשר הגיע הזמן לאסוף את השיעורים הארוזים שלנו, עלינו לזכור את מבנה הספריות שלנו. החל מתיקיית המקור, עלינו לספר ג'אוואק היכן למצוא את הקבצים שלנו.

אנחנו צריכים לקמפל את שלנו TodoItem השיעור קודם כי שלנו רשימת מטלות הכיתה תלויה בזה.

נתחיל בפתיחת שורת פקודה או מסוף וניווט לספריית המקור שלנו.

עכשיו, בואו נערך את שלנו com.baeldung.packages.domain.TodoItem מעמד:

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

אם הכיתה שלנו מתכנסת בצורה נקייה, לא נראה הודעות שגיאה וקובץ TodoItem.class אמור להופיע אצלנו com / baeldung / חבילות / תחום מַדרִיך.

עבור סוגים המתייחסים לסוגים בחבילות אחרות, עלינו להשתמש ב- מסלול קלאסי דגל לספר ל ג'אוואק פקד היכן למצוא את הכיתות האחרות.

עכשיו שלנו TodoItem הכיתה מורכבת, אנחנו יכולים לקמפל את שלנו רשימת מטלות ו TodoApp שיעורים:

> javac-classpath. com / baeldung / חבילות / *. java

שוב, אנחנו לא צריכים לראות שום הודעות שגיאה ואנחנו צריכים למצוא שני קבצי מחלקה שלנו com / baeldung / חבילות מַדרִיך.

בואו נפעיל את היישום שלנו בעזרת השם המלא של שלנו TodoApp מעמד:

> java com.baeldung.packages.TodoApp

התפוקה שלנו צריכה להיראות כך:

6. מסקנה

במאמר קצר זה למדנו מהי חבילה ומדוע עלינו להשתמש בה.

דנו במוסכמות שמות וכיצד חבילות קשורות למבנה הספריה. ראינו גם כיצד ליצור ולהשתמש בחבילות.

לבסוף, עברנו כיצד לקמפל ולהריץ יישום עם חבילות באמצעות ה- ג'אוואק ו ג'אווה פקודות.

קוד הדוגמה המלא זמין ב- GitHub.