Что такое обобщения, простой пример реализации в Java

Что такое обобщения, простой пример реализации в JavaПо существу, обобщения — это параметризованные типы. Такие типы важны, поскольку они позволяют объявлять классы, интерфейсы и методы, где тип данных, которыми они оперируют, указан в виде параметра.

Используя обобщения, можно, например, создать единственный класс, который будет автоматически обращаться с разнотипными данными.

Классы, интерфейсы или методы, оперирующие параметризованными типами, называются обобщенными.

Следует заметить, что в Java всегда предоставлялась возможность создавать в той или иной степени обобщенные классы, интерфейсы и методы, оперирующие ссылками типа Object. А поскольку класс Object служит суперклассом для всех остальных классов, то он позволяет обращаться к объекту любого типа. Читать

Асинхронные сервлеты Java

Асинхронные сервлеты JavaДо сих пор вы видели, что можете преобразовать любой метод компонента в асин­хронный метод. Теперь вы увидите, как заставить асинхронно функционировать
сервлет. Без наличия асинхронной поддержки в сервлетах нелегко отвечать требо­ваниям асинхронности при веб-разработке.

Спецификация Servlet 3.0 (JSR 315) внесла серьезные усовершенствования в интерфейсы программирования веб-приложений (API) языка Jаvа. С появлени­ем JSR 315 спецификации сервлетов были обновлены (после длительного ожида­ния) для поддержки асинхронной модели выполнения, удобной конфигурации, подключаемости и других мелких улучшений.

Асинхронные сервлеты основываются на ключевом усовершенствовании в HyperText Traпsfer Protocol (НТТР) 1.1, сделавшем возможными постоянные со­единения. В НТТР 1.0 каждое соединение использовалось для отправки и получения только одной пары «запрос/ответ«; в то же время НТТР 1.1 позволяет веб-приложе­ниям поддерживать соединение в активном состоянии и посылать множественные запросы. Читать

Интерфейс SortedSet Java — описание и примеры

Интерфейс SortedSet Java - описание и примерыИнтерфейс SortedSet расширяет интерфейс Set и определяет поведение множеств, отсортированных в порядке возрастания. Интерфейс SortedSet является обобщенным и объявляется приведенным ниже образом, где E обозначает тип объектов, которые должно содержать множество.

Помимо методов, предоставляемых интерфейсом Set, в интерфейсе SortedSet объявляются методы, перечисленные ниже. Некоторые из них генерируют исключение типа NoSuchElementException, если в вызывающем множестве отсутствуют какие-нибудь элементы.

Исключение типа NullPointerException генерируется при попытке использовать пустой объекта, когда пустое значение null в множестве недопустимо. При указании неверного аргумента генерируется исключение типа IllegalArgumentException. Читать

Применение методов isAlive() и join() Java

Применение методов isAlive() и join() Java

Нередко требуется, чтобы главный поток исполнения завершался последним. С этой целью метод sleep() вызывался в предыдущих примерах из метода main() с достаточной задержкой, чтобы все дочерние потоки исполнения завершились раньше главного.

Но это неудовлетворительное реше­ние, вызывающее следующий серьезный вопрос: откуда одному потоку исполне­ния известно, что другой поток завершился? Правда, в классе Thread предостав­ляется средство, позволяющее разрешить этот вопрос.

Определить, был ли поток исполнения завершен, можно двумя способами. Во­ первых, для этого потока можно вызвать метод isAlive(), определенный в классе Thread. Ниже приведена общая форма этого метода: Читать

Реализация интерфейса runnable Java

Реализация интерфейса runnable JavaСамый простой способ создать поток исполнения состоит в том, чтобы объ­явить класс, реализующий интерфейс Runnable. Этот интерфейс предоставляет абстракцию единицы исполняемого кода.

Поток исполнения можно создать из объекта любого класса, реализующего интерфейс Runnable. Для реализации ин­терфейса Runnable в классе должен быть объявлен единственный метод run(): Читать

Определение класса в Java

Определение класса в Java

Для того чтобы проиллюстрировать особенности создания классов на языке Java, создадим класс, инкапсулирующий сведения о транспортных средствах, например, о легковых автомобилях, фургонах и грузовиках. Назовем этот класс Vehicle. В нем будут хранить­ся следующие сведения: количество пассажиров, емкость топливного бака и среднее по­требление топлива (в милях на галлон).

Ниже приведен первый вариант класса Vehicle. В нем определены три переменные экземпляра: passengers, fuelcap и mpg. Обратите внимание на то, что в классе Vehicle пока еще отсутствуют методы. Они будут добавлены в последующих разделах, а до тех пор в этом классе содержатся только данные. Читать

Каскадное и мозаичное расположение фреймов Java

Каскадное и мозаичное расположение фреймов JavaВ операционной системе Windows предусмотрено несколько команд для организации каскадного(cascading) расположения фреймов с перекрытием(см. рис. 1) и мозаичного(tiling) расположения фреймов безе перекрытия(см. рис. 2). Однако в классах JDesktopPane и JInternalFrame не предусмотрено никаких средств для поддержки этих операций. В программе которая находится в конце статьи показано, как можно самостоятельно организовать такое упорядочение фреймов.

Для каскадного расположения нужно указать для фреймов одинаковый размер и указывать их позиции с одинаковым шагом. Читать

Изменение отслеживания в текстовых компонентах Java

Изменение отслеживания в текстовых компонентах JavaСложности при работе с интерфейсом Document возникают только тогда, когда вы пытаетесь реализовать свой собственный текстовый редактор. Тем не менее, существует наиболее распространенный случай использования этого интерфейса: отслеживание изменений.

Иногда бывает необходимо обновлять часть пользовательского интерфейса всякий раз, когда пользователь редактирует текст, не ожидая, пока пользователь щелкнет на кнопке. Ниже представлен простой пример. Мы отображаем три текстовых поля для красного, голубого и зеленого компонентов цвета. Всякий раз, когда изменяется содержимое текстовых полей, необходимо обновлять цвета. На рис. 1 показано работающее приложение, код которого будет представлен в конце статьи. Читать

Загрузчики классов Java

Загрузчики классов JavaКомпилятор Java преобразует исходные инструкции в понятный для виртуальной машины Java код. Этот код сохраняется в файле класса с расширением .class. В каждом файле класса содержится код определения и реализации для только одного класса или интерфейса.

Далее все эти файлы классов интерпретируются программой, которая умеет преобразовывать набор инструкций виртуальной машины в машинные команды используемого компьютера.

Учтите, что интерпретатор виртуальной машины загружает только те файлы классов, которые необходимы для выполнения программы в данный момент. Читать

Ключевое слово synchronized Java

Ключевое слово synchronized JavaВ ранних статьях блога вы видели, как надо использовать объекты Lock и Condition. Прежде чем двинуться дальше, подведем итоги, перечислив ключевые моменты, касающиеся блокировок и условий.

  • Блокировка защищает сегмент кода, позволяя только одному потоку в единицу времени выполнять этот код.
  • Блокировка управляет потоками, которые пытаются войти в защищенный сегмент кода.
  • Каждый объект условия управляет потоками, вошедшими в защищенный сегмент кода, но которые пока не в состоянии выполнять работу.

Интерфейсы Lock и Condition были добавлены в Java SE 5.0, чтобы предоставить программистам высокую степень контроля блокировок. Однако в большинстве ситуации вам не понадобится такой контроль, и вы можете использовать механизм, построенный на средствах языка Java. Читать