Kako odrediti vrstu podataka u Groovyju

1. Uvod

U ovom brzom vodiču istražit ćemo različite načine pronalaska tipa podataka u Groovyju.

Zapravo je različito, ovisno o tome što radimo:

  • Prvo ćemo pogledati što učiniti za primitivce
  • Zatim ćemo vidjeti kako kolekcije donose neke jedinstvene izazove
  • I na kraju, pogledat ćemo objekte i varijable klase

2. Primitivni tipovi

Groovy podržava isti broj primitivnih tipova kao Java. Tip podataka primitiva možemo pronaći na tri načina.

Za početak, zamislimo da imamo više prikaza starosti neke osobe.

Prije svega, krenimo s instanceof operater:

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

instanceof je binarni operator pomoću kojeg možemo provjeriti je li objekt primjerak određenog tipa. Vraća se pravi ako je objekt instanca te određene vrste i lažno inače.

Također, Groovy 3 dodaje novo ! instanceof operater. Vraća se pravi ako objekt nije instanca tipa i lažno inače.

Zatim, možemo koristiti i getClass () metoda iz klase Object. Vraća klasu vremena izvođenja instance:

@Test javna praznina givenWhenParameterTypeIsDouble_thenReturnTrue () {Person personObj = nova osoba (10.0) Assert.assertTrue ((personObj.ageAsDouble) .getClass () == Double)}

Na kraju, primijenimo.razred operator za pronalaženje tipa podataka:

@Test javna praznina givenWhenParameterTypeIsString_thenReturnTrue () {Person personObj = nova osoba ("10 godina") Assert.assertTrue (personObj.ageAsString.class == String)}

Slično tome, možemo pronaći tip podataka bilo kojeg primitivnog tipa.

3. Zbirke

Groovy pruža podršku za različite vrste kolekcije.

Definirajmo jednostavan popis u Groovyju:

@Test javna praznina givenGroovyList_WhenFindClassName_thenReturnTrue () {def ageList = ['ageAsString', 'ageAsDouble', 10] Assert.assertTrue (ageList.class == ArrayList) Assert.assertTrue (ageList )get} Array (ageList).

Ali na kartama, .razred operator se ne može primijeniti:

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

U gornjem isječku koda, ageMap.razred pokušat će dohvatiti vrijednost klase ključa s dane karte. Za karte se preporuča prijava getClass ()od .razred.

4. Objekti i varijable razreda

U gornjim odjeljcima koristili smo razne strategije za pronalaženje tipa podataka primitiva i zbirki.

Da bismo vidjeli kako funkcioniraju varijable klase, pretpostavimo da imamo klasu Osoba:

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

Zapamtite da getDeclaredField () vraća sva polja određene klase.

Možemo pronaći vrstu bilo kojeg predmeta koji koristi instanceof, getClass () i .razred operateri:

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

Štoviše, možemo koristiti i operatora članstva Groovy u:

@Test javna praznina givenWhenInstanceIsOfSubtype_thenReturnTrue () {Student studentObj = novi student () Assert.assertTrue (studentObj u osobi)}

5. Zaključak

U ovom kratkom članku vidjeli smo kako pronaći vrstu podataka u Groovyju. Za usporedbu, getClass () metoda je sigurnija od .razred operater. Također smo razgovarali o radu tvrtke u operater zajedno sa instanceof operater. Uz to smo naučili kako dobiti sva polja klase i primijeniti .tip operater.

Kao i uvijek, svi isječci koda mogu se naći na GitHubu.