Mivel a NICE megengedi metódusok paraméterként való átadását, illetve visszaadását, ezért számos helyen igény lehet lokális metódusok leírására, amelyek nem szükségesek, hogy teljes értékű, névvel ellátott önálló metódusok legyenek, hiszen felhasználásuk egy helyre korlátozódik. Az ilyen típusú metódusok leírására alkalmasak az anonim metódusok (anonym methods), amelyek az alábbi alakban adhatóak meg:
( paraméterek ) => { törzs }Az anonim metódusok visszatérési típusát a fordítóprogram automatikusan állapítja meg (az un. “type inference” segítségével), így azok explicit megadására nincsen szükség/lehetőség.
Példa anonim metódus használatára:
A metódushívások általános alakja f( kif1, kif2, …, kifn ), ahol f egy metódus neve, illetve általánosabban egy olyan kifejezés, amely típusára nézve metódus (ilyen lehet például egy lokális változó is). A kif1, …, kifn kifejezések a metódus paraméterei, amelyek átadása alapértelmezett esetben a megfelelő sorrend szerint történik (mint JAVA-ban), azonban lehetőség van a paraméterek névvel történő azonosítására is, ilyenkor tetszőleges sorrendben adhatóak meg (név: érték alakban).
A fentieken kívül, ha a paraméterlista speciálisan f( e1, e2, .., void->T) alakú, azaz az utolsó paraméter egy metódus típusú változó (azaz egy metódusra adott referencia), lehetőség van az un. blokkszintaxisú metódushívásra:
A fenti hívás természetesen az anonim metódusok klasszikus szintaxisával is működik, azaz a fentivel ekvivalens a következő:
Ebben az esetben a blokkszintaxis átláthatóbb kódot eredményez.
A NICE programozási nyelvben egy adott metódus meghívásakor a megfelelő implementációt a teljes paraméterlista (kapott paraméterek típusa, sorrendje, száma) határozza meg futási időben (ellentétben a JAVA-val, ahol csak a this mutató értéke segít kiválasztani a megfelelő alternatívát). Ez lehetővé teszi a multi-metódusok használatát.
Az alábbi példa jól szemlélteti, hogy ennek segítségével sokkal egyszerűbben lehet a specializált metódusokat leírni. Itt 2 Person típusú objektum egyenlőségének (equals) a megállapítását végző metódus leírását találhatjuk, először a klasszikus JAVA szerinti módon, illetve ezután a NICE multi metódus segítségével leírható módon:
A fenti példában látszik, hogy a JAVA-ban nem adható meg explicit minden paraméter kívánt típusa, így futásidejű ellenőrzések sorára lehet szükség, hogy a kívánt eredményt elérjük. A NICE ezzel szemben a multi metódusoknak köszönhetően sokkal tisztább módon képes ekvivalens funkcionalitást nyújtani:
A NICE kód sokkal tömörebb és átláthatóbb, hiszen nincs szükség sem az explicit futásidejű típusellenőrzésekre, sem pedig a konverziókra. Itt egyúttal az a lehetőség is látható, ahogyan egy már létező osztályt lehet új metódussal kibővíteni a multimetódusok alkalmazásával.
A Java nyelv nagy hiányossága, hogy nem ad lehetőséget az operátorok túlterhelésére, ezt sok programozó bánja. Bár a honlapján nem tüntetik fel, a NICE ezt a hiányosságot is pótolja, lehetőséget biztosít az operátorok túlterhelésére. A következő példa mutatja a szintaxist: