У меня есть Collections.synchronizedList WeakReference, _components;
Я написал что-то вроде следующего, ожидая, что компилятор пожалуется:
public boolean addComponent2(Component e) {
synchronized (_components) {
return _components.add(new WeakReference<Component>(e));
}
}
Но компилятор вполне устраивает. Обратите внимание, что List.add() возвращает TRUE. Итак, любой выход из синхронизированного блока снимает блокировку, но разве это не ВЫГЛЯДИТ странно? Это что-то вроде «дырки» в блоке, похожей на использование возврата в цикле.
Вы были бы счастливы поддерживать такой код?