Hlavní navigace

Názor ke zprávičce Velmi rychlá kryptografická hašovací funkce BLAKE3 vyšla ve verzi 1.0.0 od Filip Jirsák - dw: Víte, co je v Javě enum? Je...

  • 28. 7. 2021 18:07

    Filip Jirsák

    dw: Víte, co je v Javě enum? Je na funkci java.lang.Enum­.hashCode() něco špatně, o čem nevědí miliony uživatelů po celém světě, kteří ji spokojeně používají? Ta funkce nesplňuje některou z vlastností vyjmenovaných na Wikipedii, které jste odkazoval?

    Jako příklad jsem uvedl kód z jazyka Java. Pokud chcete nějaké moje tvrzení vyvrátit, doporučil bych ve vašich příspěvcích neuvádět jako příklady kód, který v Javě nepůjde přeložit, např. enum('a','a',­'a','a'). Vaše tvrzení, že je takový kód nepoužitelný, je totiž pravdivé, ale nijak nevyvrací mé tvrzení. Spíš se po přečtení takového vašeho příspěvku vkrádá myšlenka, zda to ze cloveku nevysvetlis, ze ma obmedzene rozumove shopnosti, ak to nie je schopny koli svojim obmedzenym rozumovym schopnostiam pochopit není hlavně váš problém.

    Myslím si, že by se hodil takový příklad kódu v Javě, který půjde přeložit a který bude fungovat špatně z toho důvodu, že metoda java.lang.Enum­.hashCode() funguje v rozporu se specifikací nebo nesplňuje požadavky na hashovací funkci vyjmenované na Wikipedii. Pro člověka vašich znalostí by neměl být problém takový kód napsat.

    (Mimochodem, teď píšu o java.lang.Enum­.hashCode(), předtím jsem psal o java.lang.Objec­t.hashCode(). Pokud by vás napadlo, že jsem zbaběle přešel k jiné metodě, upozorňuji vás rovnou, že java.lang.Enum­.hashCode() pouze převolává java.lang.Objec­t.hashCode(). Enum jsem vybral místo Object u proto, abyste si nestěžoval, že Object nic rozumného nedělá. Enumy se v aplikacích běžně používají, mají svůj dobrý význam a běžně se vkládají do kolekcí, kvůli kterým především metoda hashCode() v Javě existuje. Sice se s enumy kvůli efektivitě spíš používá EnumSet nebo EnumMap, ale nic nebrání použít i HashSet nebo HashMap.)