Ako nájsť všetkých vracajúcich sa null
1. Prehľad
V tomto rýchlom článku použijeme rozhranie Java 8 Stream API a rozhranie Introspektor trieda - vyvolanie všetkých kariéristov nájdených v POJO.
Vytvoríme prúd getrov, skontrolujeme návratové hodnoty a zistíme, či je hodnota poľa nulový.
2. Inštalácia
Jediné nastavenie, ktoré potrebujeme, je vytvorenie jednoduchej triedy POJO:
public class Customer {private Integer id; súkromné meno reťazca; private String emailId; súkromné dlhé telefónne číslo; // štandardné getre a setre}
3. Vyvolanie Getterových metód
Budeme analyzovať Zákazník trieda pomocou Introspektor; poskytuje jednoduchý spôsob zisťovania vlastností, udalostí a metód podporovaných cieľovou triedou.
Najprv zhromaždíme všetko PropertyDescriptor prípady nášho Zákazník trieda. PropertyDescriptor zachytáva všetky informácie o vlastnosti Java Bean:
PropertyDescriptor [] propDescArr = Introspector .getBeanInfo (Customer.class, Object.class) .getPropertyDescriptors ();
Poďme teraz po všetkom PropertyDescriptor inštancie a vyvolajte metódu čítania pre každú vlastnosť:
return Arrays.stream (propDescArr) .filter (nulls (customer)) .map (PropertyDescriptor :: getName) .collect (Collectors.toList ());
The nuly predikát, ktorý použijeme vyššie, skontroluje, či je možné vlastnosť prečítať, vyvolá getter a filtruje iba nulové hodnoty:
private static Predicate nulls (Customer customer) {return = pd -> {Method getterMethod = pd.getReadMethod (); boolovsky vysledok = nepravda; návrat (getterMethod! = null && getterMethod.invoke (zákazník) == null); }; }
Nakoniec vytvorme inštanciu a Zákazník, nastavte niekoľko vlastností na nulu a otestujte našu implementáciu:
@Test public void givenCustomer_whenAFieldIsNull_thenFieldNameInResult () {Customer customer = new Customer (1, "John", null, null); Výsledok zoznamu = Utils.getNullPropertiesList (zákazník); Zoznam expectFieldNames = Polia .asList ("emailId", "phoneNumber"); assertTrue (result.size () == expectFieldNames.size ()); assertTrue (result.containsAll (expectFieldNames)); }
4. Záver
V tomto krátkom tutoriáli sme dobre využili rozhranie Java 8 Stream API a Introspektor inštancia - vyvolanie všetkých getrov a získanie zoznamu nulových vlastností.
Ako obvykle je kód k dispozícii na GitHub.