Java 9 java.util.Objects תוספות

1. הקדמה

ה- java.util.Objects class היה חלק מג'אווה מאז גרסה 1.7. מחלקה זו מספקת שיטות שימוש סטטיות לאובייקטים שניתן להשתמש בהם לביצוע חלק מהמשימות היומיומיות כמו בדיקת שוויון, ריק צ'קים וכו '.

במאמר זה נבחן את השיטות החדשות שהוצגו ב- java.util.Objects בכיתה בג'אווה 9.

2. ה requireNonNullElse שיטה

שיטה זו מקבלת שני פרמטרים ומחזירה את הפרמטר הראשון אם לא ריק, הפרמטר השני אחרת. אם שני הפרמטרים הם ריק, זה זורק NullPointerException:

רשימה פרטית aMethodReturningNullList () {return null; } @Test public void givenNullObject_whenRequireNonNullElse_thenElse () {List aList = Objects.requireNonNullElse (aMethodReturningNullList (), Collections.EMPTY_LIST); assertThat (aList, is (Collections.EMPTY_LIST)); } רשימה פרטית aMethodReturningNonNullList () {return List.of ("item1", "item2"); } @Test הציבור בטל givenObject_whenRequireNonNullElse_thenObject () {רשימה aList = Objects.requireNonNullElse (aMethodReturningNonNullList (), Collections.EMPTY_LIST); assertThat (aList, is (List.of ("item1", "item2"))); } @Test (צפוי = NullPointerException.class) חלל ציבורי שניתן Null_whenRequireNonNullElse_thenException () {Objects.requireNonNullElse (null, null); }

3. שימוש requireNonNullElseGet

שיטה זו דומה ל- requireNonNullElse, חוץ מזה ש הפרמטר השני, הוא a ספק. java.util.function ממשק המאפשר מיישר עצלן של האוסף המסופק. ה ספק היישום אחראי להחזרת אובייקט שאינו null, כמוצג להלן:

@Test public void givenObject_whenRequireNonNullElseGet_thenObject () {List aList = Objects.requireNonNullElseGet (null, List :: of); assertThat (aList, is (List.of ())); }

4. שימוש checkIndex

שיטה זו משמשת לבדיקת האינדקס באורך הנתון. הוא מחזיר את המדד אם 0 <= אינדקס <אורך. אחרת, זה זורק IndexOutOfBoundsException כפי שמוצג מטה:

@Test הציבור בטל givenNumber_whenInvokeCheckIndex_thenNumber () {int אורך = 5; assertThat (Objects.checkIndex (4, אורך), הוא (4)); } @Test (צפוי = IndexOutOfBoundsException.class) חלל ציבורי שניתןOutOfRangeNumber_whenInvokeCheckIndex_thenException () {int אורך = 5; Objects.checkIndex (5, אורך); }

5. שימוש checkFromToIndex

שיטה זו משמשת כדי לבדוק אם תת-הטווח הנתון שנוצר על ידי [fromIndex, toIndex) נמצא בטווח שנוצר על ידי [0, אורך). אם תחום המשנה תקף, הוא מחזיר את הגבול התחתון כמוצג להלן:

@Test ציבור בטל givenSubRange_whenCheckFromToIndex_thenNumber () {int אורך = 6; assertThat (Objects.checkFromToIndex (2, אורך, אורך), הוא (2)); } @Test (צפוי = IndexOutOfBoundsException.class) חלל ציבורי givenInvalidSubRange_whenCheckFromToIndex_thenException () {int אורך = 6; Objects.checkFromToIndex (2,7, אורך); }

הערה: במתמטיקה, טווח המיוצג בצורה של [a, b) מציין שהטווח כולל a ובלעדי b. [ו] ציין שהמספר כלול ו (ו) ציין שהמספר אינו נכלל.

6. שימוש checkFromIndexSize

שיטה זו דומה ל- checkFromToIndex אלא שבמקום לספק את הגבול העליון של תת-הטווח אנו מספקים את הגודל ואת הגבול התחתון של תת-הטווח.

תת-הטווח, במקרה זה, הוא [fromIndex, fromIndex + size) ושיטה זו בודקת שתחום המשנה נמצא בטווח שנוצר על ידי [0, אורך):

@Test ציבורי בטל givenSubRange_whenCheckFromIndexSize_thenNumber () {int אורך = 6; assertThat (Objects.checkFromIndexSize (2,3, אורך), הוא (2)); } @Test (צפוי = IndexOutOfBoundsException.class) חלל ציבורי givenInvalidSubRange_whenCheckFromIndexSize_thenException () {int length = 6; Objects.checkFromIndexSize (2, 6, אורך); }

7. מסקנה

ה java.util.Objects בכיתה ב- JDK 9 מכסה כמה שיטות שימוש חדשות. זה גם מעודד מכיוון שכיתת שירות זו עודכנה באופן קבוע מאז שהוצגה ב- Java 7.

הקוד למאמר זה ניתן למצוא באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found