Hogyan lehet meghatározni az adattípust a Groovy-ban

1. Bemutatkozás

Ebben a gyors bemutatóban különböző módszereket fogunk felfedezni az adattípus megtalálásához a Groovy-ban.

Valójában ez attól függ, hogy mit csinálunk:

  • Először megvizsgáljuk, mit kell tenni a primitíveknél
  • Majd meglátjuk, hogy a gyűjtemények hogyan hoznak egyedi kihívásokat
  • És végül megvizsgáljuk az objektumokat és az osztályváltozókat

2. Primitív típusok

Groovy ugyanannyi primitív típust támogat, mint a Java. A primitívek adattípusát háromféleképpen találhatjuk meg.

Először is képzeljük el, hogy az ember korának többféle ábrázolása van.

Először is kezdjük a Például az operátor:

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

Például az egy bináris operátor, amellyel ellenőrizhetjük, hogy egy objektum egy adott típusú példány. Visszatér igaz ha az objektum az adott típusú példány és hamis másképp.

Is, A Groovy 3 hozzáadja az újat !Például az operátor. Visszatér igaz ha az objektum nem egy típus példánya és hamis másképp.

Ezután használhatjuk a getClass () metódus az Object osztályból. Visszaadja a példány futási osztályát:

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

Végül alkalmazzuk a.osztály operátor az adattípus megtalálásához:

@Test public void givenWhenParameterTypeIsString_thenReturnTrue () {Person personObj = new Person ("10 years") Assert.assertTrue (personObj.ageAsString.class == String)}

Hasonlóképpen megtalálhatjuk bármely primitív adattípust is.

3. Gyűjtemények

A Groovy különféle gyűjteménytípusokhoz nyújt támogatást.

Definiáljunk egy egyszerű listát a Groovy-ban:

@Test public void givenGroovyList_WhenFindClassName_thenReturnTrue () {def ageList = ['ageAsString', 'ageAsDouble', 10] Assert.assertTrue (ageList.class == ArrayList) Assert.assertTrue (ageList.getay) (ageList.getClass)

De a térképeken a .osztály operátor nem alkalmazható:

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

A fenti kódrészletben ageMap.osztály megpróbálja lekérni a kulcsosztály értékét az adott térképről. Térképeknél ajánlott alkalmazni getClass ()mint .osztály.

4. Objektumok és osztályváltozók

A fenti szakaszokban különféle stratégiákat használtunk a primitívek és gyűjtemények adattípusának megkeresésére.

Tegyük fel, hogy van osztályunk, hogy lássuk, hogyan működnek az osztályváltozók Személy:

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

Ne feledje, hogy a getDeclaredField () egy adott osztály összes mezőjét adja eredményül.

Bármely objektum típusát megtalálhatjuk a használatával instanceof, getClass () és .osztály üzemeltetők:

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

Sőt, használhatjuk a Groovy tagsági operátort is ban ben:

@Test public void givenWhenInstanceIsOfSubtype_thenReturnTrue () {Student studentObj = new Student () Assert.assertTrue (studentObj in Person)}

5. Következtetés

Ebben a rövid cikkben láttuk, hogyan lehet megtalálni az adattípust a Groovy-ban. Ehhez képest: getClass () módszer biztonságosabb, mint .osztály operátor. Megbeszéltük a ban ben üzemeltetővel együtt Például az operátor. Ezenkívül megtanultuk, hogyan szerezzük be az osztály összes mezőjét és hogyan alkalmazzuk .típus operátor.

Mint mindig, az összes kódrészlet megtalálható a GitHubon.