Может случиться так, что память объекта никогда не будет освобождена, потому что программа даже не приблизится к точке критического расхода ресурсов.
>11 > Джошуа Блош в своей книге (в разделе «Избегайте финализаторов») высказывается еще решительнее: «Финализаторы непредсказуемы, зачастую опасны и чаще всего не нужны». Effective Java, стр. 20 (издательство Addison-Wesley, 2001).
>12 > Этот термин предложил Билл Веннерс (www.artima.com) во время семинара, который мы проводили с ним вместе.
> Конечно, проверка каждого массива на соблюдение границ требует времени и дополнительного кода, и отключить ее невозможно. Это может снизить быстродействие программы, у которой в критичных (по времени) местах активно используются массивы. Но проектировщики Java решили, что для безопасности Интернета и продуктивности программиста такие издержки себя оправдывают.
> Использовать Java-интерпретатор не обязательно. Существует несколько компиляторов, создающих единый исполняемый файл.
>13 > На самом деле доступ private или protected могут иметь внутренние классы, но это особый случай (см. главу 8).
>14 > Эта концепция внутренних классов сильно отличается от концепции вложенных классов С++, которые представляют собой простой механизм для сокрытия имен. Вложенные классы С++ не имеют связи с объектом-оболочкой и прав доступа к его элементам.
>15 > Близкий аналог вложенных классов С++, за тем исключением, что в Java вложенные классы способны обращаться к закрытым членам внешнего класса.
>16 > Я всегда решал эту задачу с особым удовольствием; она впервые появилась в одной из первых моих книг С++ Inside & Out, но Java-реализация выглядит гораздо элегантнее.
>17 > Механизм обработки исключений в языке С++ не имеет аналога finally, поскольку опирается на деструкторы в такого рода действиях.
>18 > Деструктор — специальная функция, вызываемая при завершении работы с объектом. Всегда точно известно, где и когда вызывается деструктор. В языке С# (который гораздо больше схож с Java) реализовано автоматическое уничтожение объектов.
>19 > Язык С++ стандарта ISO вводит аналогичные ограничения при возбуждении исключений унасле-' дованными версиями методов (исключения обязаны быть такими же или унаследованными от исключений базовых версий методов). Это единственный способ С++ для контроля верности описания исключений во время компиляции.
> Косвенно через язык Smalltalk, после разговоров со многими опытными программистами на этом языке, и напрямую при работе с Python (www.Python.org).
>20 > Киз Костер, архитектор языка CDL, процитировано Бертраном Мейером, создателем языка Eiffel. http://www.elj.com/elj/vl/nl/bm/right.
>21 > Сказанное относится в основном к документации ранних версий Java. Теперь фирма Sun значительно улучшила HTML-документацию Java, и найти методы базовых классов стало проще.
>22 > Все употребляемые далее термины: «настраивание», «наслаивание», «фильтрация» или «декорирование» — по сути, означают одно и то же — перегрузку всех методов InputStream для придания дополнительной функциональности при работе с данными потоков. При этом класс FilterlnputStream осуществляет перегрузку без посторонней помощи, а данные соответствующим образом трансформируются. Подклассы FilterlnputStream могут, в свою очередь, перегрузить эти же методы и добавить дополнительные методы и поля. —