Hvordan finne alle Getters Returning Null

1. Oversikt

I denne raske artikkelen bruker vi Java 8 Stream API og Introspektor klasse - for å påkalle alle getters som er funnet i en POJO.

Vi vil lage en strøm av getters, inspisere returverdier og se om en feltverdi er null.

2. Oppsett

Det eneste oppsettet vi trenger er å lage en enkel POJO-klasse:

offentlig klasse kunde {privat heltal id; privat strengnavn; private streng e-post-ID; privat Langtelefonnummer; // standard getters og setters}

3. Påkalle Getter Methods

Vi analyserer Kunde klasse bruker Introspektor; Dette gir en enkel måte å oppdage egenskaper, hendelser og metoder som støttes av en målklasse.

Vi samler først alle PropertyDescriptor tilfeller av vår Kunde klasse. PropertyDescriptor fanger all informasjonen til en Java Bean-eiendom:

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

La oss nå gå over alt PropertyDescriptor forekomster, og påkaller lesemetoden for hver eiendom:

returnere Arrays.stream (propDescArr) .filter (null (kunde)) .map (PropertyDescriptor :: getName) .collect (Collectors.toList ()); 

De null predikat vi bruker over sjekker om egenskapen kan leses påkaller getter og filtrerer bare nullverdier:

private static Predicate nulls (Kundekunde) {return = pd -> {Method getterMethod = pd.getReadMethod (); boolsk resultat = falsk; retur (getterMethod! = null && getterMethod.invoke (kunde) == null); }; } 

Til slutt, la oss nå opprette en forekomst av en Kunde, sett noen egenskaper til null og test implementeringen vår:

@Test offentlig ugyldig givenCustomer_whenAFieldIsNull_thenFieldNameInResult () {Kundekunde = ny kunde (1, "John", null, null); Listresultat = Utils.getNullPropertiesList (kunde); Liste expectedFieldNames = Arrays .asList ("emailId", "phoneNumber"); assertTrue (result.size () == forventetFieldNames.size ()); assertTrue (result.containsAll (expectedFieldNames)); }

4. Konklusjon

I denne korte opplæringen brukte vi Java 8 Stream API og en Introspektor forekomst - for å påkalle alle getters og hente en liste over nullegenskaper.

Som vanlig er koden tilgjengelig på GitHub.


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