מילת המפתח והשיטות המקוריות של Java

1. סקירה כללית

במדריך מהיר זה נדון במושג ה- יָלִיד מילת מפתח ב- Java, ונראה גם כיצד ניתן לשלב יָלִיד שיטות לקוד Java.

2. ה יָלִיד מילת מפתח בג'אווה

קודם כל, בואו נדון במה זה יָלִיד מילת מפתח בג'אווה.

במילים פשוטות, זהו שינוי ללא גישה המשמש לגישה לשיטות המיושמות בשפה שאינה Java כמו C / C ++.

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

3. יָלִיד שיטות

א יָלִיד שיטה היא שיטת Java (או שיטת מופע או שיטת מחלקה) שהיישום שלה נכתב גם בשפת תכנות אחרת כמו C / C ++.

יתר על כן, שיטה המסומנת כ- יָלִיד לא יכול להיות בעל גוף ועליו להסתיים בנקודה-פסיק:

[ציבורי | מוגן | שיטה פרטית] native [return_type] ();

אנו יכולים להשתמש בהם כדי:

  • ליישם ממשק עם שיחות מערכת או ספריות שנכתבו בשפות תכנות אחרות
  • גישה למשאבי מערכת או חומרה שניתן להגיע אליהם רק מהשפה האחרת
  • לשלב קוד מורשת קיים שכבר נכתב ב- C / C ++ ביישום Java
  • קוראים לספריה שהורכבה טעונה באופן דינמי עם קוד שרירותי מג'אווה

4. דוגמאות

בואו נדגים כיצד לשלב שיטות אלה בקוד ה- Java שלנו.

4.1. גישה לקוד מקומי ב- Java

קודם כל, בואו ניצור כיתה DateTimeUtils שצריך לגשת לתליית פלטפורמה יָלִיד שיטה בשם getSystemTime:

מחלקה ציבורית DateTimeUtils {מחרוזת ציבורי מקומית getSystemTime (); // ...}

כדי לטעון אותו, נשתמש ב- System.loadLibrary.

בוא נעמיד את הקריאה לטעינת ספרייה זו ב- סטָטִי חסום כך שיהיה זמין בכיתה שלנו:

מחלקה ציבורית DateTimeUtils {מחרוזת ציבורי מקומית getSystemTime (); סטטי {System.loadLibrary ("nativedatetimeutils"); }}

יצרנו ספריית קישורים דינמית, הילידים הטבעיים, שמיישם getSystemTime ב- C ++ תוך שימוש בהוראות מפורטות המכוסות במדריך שלנו למאמר JNI.

4.2. בדיקה יָלִיד שיטות

לבסוף, בואו נראה כיצד אנו יכולים לבדוק שיטות מקומיות המוגדרות ב- DateTimeUtils מעמד:

class class DateTimeUtilsManualTest {@BeforeClass public static void setUpClass () {// .. לטעון ספריות תלויות אחרות System.loadLibrary ("nativedatetimeutils"); } @Test ציבורי בטל givenNativeLibsLoaded_thenNativeMethodIsAccessible () {DateTimeUtils dateTimeUtils = DateTimeUtils חדש (); LOG.info ("זמן המערכת הוא:" + dateTimeUtils.getSystemTime ()); assertNotNull (dateTimeUtils.getSystemTime ()); }}

להלן פלט הלוגר:

[ראשי] INFO c.b.n.DateTimeUtilsManualTest - זמן המערכת הוא: רביעי 19 בדצמבר 11:34:02 2018

כפי שאנו רואים, בעזרת ה- יָלִיד מילת מפתח, אנו מצליחים לגשת ליישום תלוי פלטפורמה שנכתב בשפה אחרת (במקרה שלנו C ++).

5. מסקנה

במאמר זה למדנו את היסודות של יָלִיד מילות מפתח ושיטות. עם דוגמה מהירה למדנו גם כיצד לשלב אותם בג'אווה.

קטעי הקוד המשמשים במאמר זה זמינים דרך Github.