כיצד לקבוע את סוג הנתונים ב- Groovy

1. הקדמה

במדריך מהיר זה, אנו נבחן דרכים שונות למצוא את סוג הנתונים ב- Groovy.

למעשה, זה שונה בהתאם למה שאנחנו עושים:

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

2. סוגים פרימיטיביים

Groovy תומך באותו מספר סוגים פרימיטיביים כמו Java. אנו יכולים למצוא את סוג הנתונים של פרימיטיבים בשלוש דרכים.

ראשית, נדמיין שיש לנו ייצוגים מרובים של גיל האדם.

קודם כל, בואו נתחיל עם ה- מופע של מַפעִיל:

@Test הציבור בטל givenWhenParameterTypeIsInteger_thenReturnTrue () {Person personObj = אדם חדש (10) Assert.assertTrue (personObj.ageAsInt מופע של מספר שלם); }

מופע של הוא מפעיל בינארי בו נוכל לבדוק אם אובייקט הוא מופע מסוג מסוים. זה חוזר נָכוֹן אם האובייקט הוא מופע מסוג מסוים זה שֶׁקֶר אחרת.

גַם, גרובי 3 מוסיף את החדש !מופע של מַפעִיל. זה חוזר נָכוֹן אם האובייקט אינו מופע מסוג ו שֶׁקֶר אחרת.

לאחר מכן, אנו יכולים גם להשתמש ב- getClass () שיטה מהמחלקה Object. זה מחזיר את מחלקת זמן הריצה של מופע:

@Test ציבורי בטל givenWhenParameterTypeIsDouble_thenReturnTrue () {Person personObj = אדם חדש (10.0) Assert.assertTrue ((personObj.ageAsDouble) .getClass () == כפול)}

לבסוף, בואו להחיל את.מעמד מפעיל כדי למצוא את סוג הנתונים:

@Test ציבורי בטל givenWhenParameterTypeIsString_thenReturnTrue () {Person personObj = אדם חדש ("10 שנים") Assert.assertTrue (personObj.ageAsString.class == מחרוזת)}

באופן דומה, אנו יכולים למצוא את סוג הנתונים מכל סוג פרימיטיבי.

3. אוספים

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

בואו נגדיר רשימה פשוטה ב- Groovy:

@Test הציבור בטל givenGroovyList_WhenFindClassName_thenReturnTrue () {def ageList = ['ageAsString', 'ageAsDouble', 10] Assert.assertTrue (ageList.class == ArrayList) Assert.assertTrue (ageList.getCrayList))

אבל במפות, .מעמד לא ניתן להחיל מפעיל:

@Test הציבור בטל givenGrooyMap_WhenFindClassName_thenReturnTrue () {def ageMap = [ageAsString: '10 years ', ageAsDouble: 10.0] Assert.assertFalse (ageMap.class == LinkedHashMap)}

בקטע הקוד שלעיל, ageMap.class ינסה לאחזר את הערך של מחלקת המפתחות מהמפה הנתונה. למפות מומלץ להגיש בקשה getClass ()מאשר .מעמד.

4. אובייקטים ומשתנים כיתתיים

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

כדי לראות כיצד משתנים כיתתיים עובדים, נניח שיש לנו מחלקה אדם:

@Test ציבור בטל givenClassName_WhenParameterIsInteger_thenReturnTrue () {Assert.assertTrue (Person.class.getDeclaredField ('ageAsInt'). Type == int.class)}

זכור כי ה- getDeclaredField () מחזירה את כל השדות של מחלקה מסוימת.

אנו יכולים למצוא את סוג האובייקט המשתמש בו instanceof, getClass () ו .מעמד מפעילים:

@ מבחן בטל פומבי שניתןWhenObjectIsInstanceOfType_thenReturnTrue () {Person personObj = אדם חדש () Assert.assertTrue (personObj למשל של אדם)}

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

@Test ציבורי בטל givenWhenInstanceIsOfSubtype_thenReturnTrue () {Student studentObj = סטודנט חדש () Assert.assertTrue (studentObj באופן אישי)}

5. מסקנה

במאמר קצר זה ראינו כיצד למצוא את סוג הנתונים ב- Groovy. לשם השוואה, ה getClass () שיטה בטוחה יותר מ .מעמד מַפעִיל. דנו גם בעבודה של ב מפעיל יחד עם מופע של מַפעִיל. בנוסף, למדנו כיצד להשיג את כל תחומי הכיתה ולהחיל את .סוּג מַפעִיל.

כמו תמיד, ניתן למצוא את כל קטעי הקוד ב- GitHub.