Такие вот у нас печеньки...
20 февраля 2012 г.
java.io.File is not immutable
Удивительно, но факт: несмотря на то, что контракт java.io.File явно указывает, что Instances of the File class are immutable; that is, once created, the abstract pathname represented by a File object will never change., однако поле File.path -- не final. Почему оно не-final тоже, в общем-то, понятно -- чертова сериализация, мать ее. Однако от нарушения контракта это не спасает. Я, поначалу, думал, что возможно safe publishing обеспечивается неявным мембаром при вызове какого-нибудь нативного метода в ходе инициализации -- но нет, авторитетные источники подтверждают -- баг как баг. И место его возле параши теперь здесь. Правда, приоритет Low, и поправлен будет не раньше 1.8 -- а до тех пор считать объект File immutable в том смысле, в котором это понимают в concurrency -- строго говоря, нельзя.
Такие вот у нас печеньки...
Такие вот у нас печеньки...
Подписаться на:
Комментарии к сообщению (Atom)
А багу ты постил?
ОтветитьУдалитьНеужели уже пофиксили судя по статусу?
Нет, пока я пытался уточнить, баг ли это, или я чего-то не понимаю -- баг запостили за меня.
ОтветитьУдалитьНу пофиксили, да -- долго ли. Но увидим-то мы это только в 8-ке судя по всему...