Nejde ani tak o viditelnost metody, ale o to, zda je metoda součástí API. Klíčové slovo assert kontroluje podmínku, o které je programátor přesvědčen, že platí. Motivací pro používání assert je snaha dozvědět se co nejdříve o tom, že je něco špatně. Použití má smysl tam, kde sám píšu metodu i volání (nebo já píšu metodu a kolega z týmu volání). Naproti tomu výjimka IllegalArgumentException slouží k informování volájícího, že zavolal metodu s nesprávnými argumenty. Hodí se tam, kde jde o metodu API, které bude přístupné někomu z vnějšku (tj. mimo systém).
Z.T. -- Zdenek Tronicek FIT CTU in Prague Ondra Medek napsal(a): >> Aserce kontroluji, zda modul dostava spravne vstupy a jeho stav je >> korektni. Je to takova velmi omezena varianta Design by Contract. >> Nemely by se pouzivat na overovani vstupu od uzivatele, jen na obranu >> pred programatorskymi chybami. >> Typicke pouziti: >> Scitac je napsan jen pro nezaporna cisla. To je popsano v dokumentaci. >> Na jeho zacatku se assertem overi, ze cisla skutecne nejsou zaporna. >> Pokud by ho nejaky programator pouzil spatne, brzy se to dozvi. >> (Otazkou je, zda trebas tady radeji nepouzit InvalidArgumentException, >> hranice je neostra.) > > Java assert se nema pouzivat na kontrolu parametru public metod, viz > http://download.oracle.com/javase/1.4.2/docs/guide/lang/assert.html#usage-conditions > Asi protoze ten assert se ma na produkci vypinat. > > Misto toho treba Spring ma Assert tridu: > http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/util/Assert.html > (A ja si taky kdysi jednu vyrobil: > http://xmedeko.blogspot.com/2010/12/java-simple-assert-class-for-design-by.html) >
