pátek 7. května 2004

Proč java.util.Properties není bezpečný

Při vývoji javy v momentě, kdy nový java.util.Map nahradil starší java.util.Hashtable, již existovala třída java.util.Properties, který dědila z java.util.Hashtable, ta tehdy neměla metody put a putAll, které přinesl až interface java.util.Map. Jenomže v rámci sjednocení Collections frameworku byly i do java.util.Hashtable zavedeny metody z java.util.Map. A tedy se do java.util.Properties dostali metody put(Object key, Object value) a putAll(Map map). Takže nyní můžete vložit i do java.util.Properties (které má reprezentovat tabulku Stringů klíč - hodnota) i libovolné objekty. Na tento bezpečnostní problém upozorňuje i javadoc k java.util.Properties.

Jen tak na okraj, já samozřejmě nečtu javadoc k notoricky známým třídám, za což si sypu popel na hlavu, takže na tuto vlastnost mě upozornila až kniha Java efektivně - 57 zásad softwarového experta.