Ako určiť dátový typ v Groovy

1. Úvod

V tomto rýchlom výučbe preskúmame rôzne spôsoby, ako nájsť dátový typ v aplikácii Groovy.

V skutočnosti sa to líši podľa toho, čo robíme:

  • Najprv sa pozrieme na to, čo robiť pre primitívov
  • Potom uvidíme, ako kolekcie prinesú niektoré jedinečné výzvy
  • A nakoniec sa pozrieme na objekty a premenné triedy

2. Primitívne typy

Groovy podporuje rovnaký počet primitívnych typov ako Java. Dátový typ primitívov môžeme nájsť tromi spôsobmi.

Na začiatok si predstavme, že máme viac zobrazení veku človeka.

Najskôr začnime s inštancia operátor:

@Test public void givenWhenParameterTypeIsInteger_thenReturnTrue () {Osoba personObj = nová Osoba (10) Assert.assertTrue (personObj.ageAsInt inštancia celého čísla); }

inštancia je binárny operátor, pomocou ktorého môžeme skontrolovať, či je objekt inštanciou daného typu. Vracia sa to pravda ak je objekt inštanciou tohto konkrétneho typu a nepravdivé inak.

Tiež Groovy 3 pridáva nové ! instanceof operátor. Vracia sa to pravda ak objekt nie je inštanciou typu a nepravdivé inak.

Potom môžeme tiež použiť getClass () metóda z triedy Object. Vráti runtime triedu inštancie:

@Test public void givenWhenParameterTypeIsDouble_thenReturnTrue () {Osoba personObj = nová osoba (10.0) Assert.assertTrue ((personObj.ageAsDouble) .getClass () == Double)}

Na záver použijeme.trieda operátor vyhľadať dátový typ:

@Test public void givenWhenParameterTypeIsString_thenReturnTrue () {Osoba personObj = nová Osoba ("10 rokov") Assert.assertTrue (personObj.ageAsString.class == Reťazec)}

Podobne môžeme nájsť dátový typ ľubovoľného primitívneho typu.

3. Zbierky

Groovy poskytuje podporu pre rôzne typy zbierok.

Poďme definovať jednoduchý zoznam v Groovy:

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

Ale na mapách je .trieda operátor nemožno použiť:

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

Vo vyššie uvedenom útržku kódu ageMap.trieda sa pokúsi načítať hodnotu triedy kľúčov z danej mapy. Pre mapy sa odporúča použiť getClass ()než .trieda.

4. Predmety a premenné triedy

V predchádzajúcich častiach sme pomocou rôznych stratégií našli dátový typ primitívov a zbierok.

Aby sme videli, ako fungujú premenné triedy, predpokladajme, že máme triedu Osoba:

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

Pamätajte, že getDeclaredField () vráti všetky polia určitej triedy.

Nájdeme typ ľubovoľného objektu pomocou instanceof, getClass () a .trieda operátori:

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

Ďalej môžeme tiež použiť operátora členstva Groovy v:

@Test public void givenWhenInstanceIsOfSubtype_thenReturnTrue () {Student studentObj = nový Student () Assert.assertTrue (študentObj osobne)}

5. Záver

V tomto krátkom článku sme videli, ako nájsť dátový typ v aplikácii Groovy. Na porovnanie getClass () metóda je bezpečnejšia ako .trieda operátor. Diskutovali sme tiež o fungovaní v operátor spolu s inštancia operátor. Ďalej sme sa naučili, ako získať všetky polia triedy a použiť .typ operátor.

Všetky úryvky kódu nájdete ako vždy na GitHub.


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