Hvordan bestemme datatypen i Groovy

1. Introduksjon

I denne raske opplæringen skal vi utforske forskjellige måter å finne datatypen i Groovy på.

Egentlig er det forskjellig avhengig av hva vi gjør:

  • Først skal vi se på hva vi skal gjøre for primitiver
  • Så får vi se hvordan samlinger gir noen unike utfordringer
  • Og til slutt vil vi se på objekter og klassevariabler

2. Primitive typer

Groovy støtter samme antall primitive typer som Java. Vi kan finne datatypen til primitiver på tre måter.

For å begynne, la oss forestille oss at vi har flere representasjoner av en persons alder.

Først av alt, la oss starte med tilfelle av operatør:

@Test public void givenWhenParameterTypeIsInteger_thenReturnTrue () {Person personObj = new Person (10) Assert.assertTrue (personObj.ageAsInt instance of Integer); }

tilfelle av er en binær operator som vi kan bruke til å sjekke om et objekt er en forekomst av en gitt type. Det kommer tilbake ekte hvis objektet er en forekomst av den aktuelle typen og falsk ellers.

Også, Groovy 3 legger til det nye !tilfelle av operatør. Det kommer tilbake ekte hvis objektet ikke er en forekomst av en type og falsk ellers.

Deretter kan vi også bruke getClass () metode fra Objektklassen. Den returnerer kjøretidsklassen til en forekomst:

@Test public void givenWhenParameterTypeIsDouble_thenReturnTrue () {Person personObj = new Person (10.0) Assert.assertTrue ((personObj.ageAsDouble) .getClass () == Double)}

Til slutt, la oss bruke.klasse operatøren for å finne datatypen:

@Test offentlig ugyldighet gittWhenParameterTypeIsString_thenReturnTrue () {Person personObj = ny person ("10 år") Assert.assertTrue (personObj.ageAsString.class == String)}

På samme måte kan vi finne datatypen til enhver primitiv type.

3. Samlinger

Groovy gir støtte for ulike samlingstyper.

La oss definere en enkel liste i Groovy:

@Test offentlig ugyldig givenGroovyList_WhenFindClassName_thenReturnTrue () {def ageList = ['ageAsString', 'ageAsDouble', 10] Assert.assertTrue (ageList.class == ArrayList) Assert.assertTrue (ageList.getClassL) =)

Men på kart, .klasse operatør kan ikke brukes:

@Test offentlig ugyldig givenGrooyMap_WhenFindClassName_thenReturnTrue () {def ageMap = [ageAsString: '10 years ', ageAsDouble: 10.0] Assert.assertFalse (ageMap.class == LinkedHashMap)}

I kodebiten ovenfor, ageMap.class vil prøve å hente verdien til nøkkelklassen fra det gitte kartet. For kart anbefales det å søke getClass ()enn .klasse.

4. Objekter og klassevariabler

I avsnittene ovenfor brukte vi forskjellige strategier for å finne datatypen til primitiver og samlinger.

La oss anta at vi har en klasse for å se hvordan klassevariabler fungerer Person:

@Test offentlig ugyldig givenClassName_WhenParameterIsInteger_thenReturnTrue () {Assert.assertTrue (Person.class.getDeclaredField ('ageAsInt'). Type == int.class)}

Husk at getDeclaredField () returnerer alle feltene i en bestemt klasse.

Vi kan finne hvilken type objekt som brukes instanceof, getClass () og .klasse operatører:

@Test public void givenWhenObjectIsInstanceOfType_thenReturnTrue () {Person personObj = new Person () Assert.assertTrue (personObj instance of Person)}

Videre kan vi også bruke Groovy-medlemsoperatøren i:

@Test offentlig ugyldighet gittWhenInstanceIsOfSubtype_thenReturnTrue () {Student studentObj = ny student () Assert.assertTrue (studentObj personlig)}

5. Konklusjon

I denne korte artikkelen så vi hvordan du finner datatypen i Groovy. Til sammenligning, den getClass () metoden er tryggere enn .klasse operatør. Vi diskuterte også arbeidet med i operatør sammen med tilfelle av operatør. I tillegg lærte vi hvordan vi kan få alle feltene i en klasse og bruke .type operatør.

Som alltid kan alle kodebitene bli funnet på GitHub.