כיצד למצוא את כל הגטרים החוזרים

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

במאמר מהיר זה נשתמש ב- Java 8 Stream API וב- מבקר בכיתה - להזעיק את כל הגטרים שנמצאו ב- POJO.

ניצור זרם של גטרים, נבדוק ערכי תשואה ונראה אם ​​ערך שדה הוא ריק.

2. התקנה

ההתקנה היחידה שאנו זקוקים לה היא ליצור שיעור POJO פשוט:

לקוח ממעמד ציבורי {מזהה שלם פרטי; שם מחרוזת פרטי; פרטי מחרוזת אימייל מזהה; פרטי Long phoneNumber; // סטרים וקובעים סטנדרטיים}

3. הפעלת שיטות גטר

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

ראשית נאסוף את כל PropertyDescriptor מקרים שלנו צרכן מעמד. PropertyDescriptor לוכד את כל המידע של מאפיין Java Bean:

PropertyDescriptor [] propDescArr = Introspector .getBeanInfo (Customer.class, Object.class) .getPropertyDescriptors (); 

בואו נעבור על הכל PropertyDescriptor מקרים, והפעילו את שיטת הקריאה לכל נכס:

החזר Arrays.stream (propDescArr) .filter (nulls (לקוח)) .map (PropertyDescriptor :: getName) .collect (Collectors.toList ()); 

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

אפסים פרטיים של סטטי פרטיים (לקוח לקוח) {return = pd -> {Method getterMethod = pd.getReadMethod (); תוצאה בוליאנית = שקר; return (getterMethod! = null && getterMethod.invoke (לקוח) == null); }; } 

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

@Test ציבורי בטל givenCustomer_whenAFieldIsNull_thenFieldNameInResult () {לקוח לקוח = לקוח חדש (1, "ג'ון", null, null); תוצאת רשימה = Utils.getNullPropertiesList (לקוח); רשימה expectFieldNames = מערכים .asList ("emailId", "phoneNumber"); assertTrue (result.size () == expectFieldNames.size ()); assertTrue (result.containsAll (expectFieldNames)); }

4. מסקנה

במדריך קצר זה עשינו שימוש טוב ב- Java 8 Stream API וב- מבקר מופע - כדי להפעיל את כל הגטרים ולאחזר רשימה של מאפייני null.

כרגיל, הקוד זמין ב- GitHub.


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