כיצד למצוא את כל הגטרים החוזרים
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.