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.