מילת המפתח והשיטות המקוריות של 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.