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