Иногда бывает сложно выбрать хобби – некоторые требуют огромного количества времени, другие предполагают серьёзные финансовые вложения. На данный момент оптимальным вариантом для многих людей стали игровые аппараты. Виртуальное казино Вулкан предлагает массу возможностей – каждый человек при помощи этого ресурса сумеет не только гарантированно побороть скуку, но и заработать реальные деньги.
Архив рубрики Java для опытных
Лямбда-выражения и исключения в Java
Лямбда-выражение может генерировать исключение. Но если оно генерирует проверяемое исключение, то последнее должно быть совместимо с исключениями, перечисленными в выражении throws из объявления абстрактного метода в функциональном интерфейсе.
Эта особенность демонстрируется в приведенном ниже примере, где вычисляется среднее числовых значений типа double в массиве. Читать
Передача лямбда-выражений в качестве аргументов в Java
Как известно, лямбда-выражение может быть использовано в любом контексте, предоставляющем его целевой тип
Один из таких контекстов возникает при передаче лямбда-выражения в качестве аргумента.
В действительностипередача лямбда-выражений в качестве аргументов является весьма распространенным примером их применения.
Более того, это весьма эффективное их применение, поскольку оно дает возможность передать исполняемый код методу в качестве его аргумента.
Благадоря этому значительно повышается выразительная сила Java. Читать
Блочные лямбда выражения в Java
Тело лямбда-выражений обычно состоят из единственного выражения. Такая разновидность тел называется телом выражения, а лямбда-выражения с телом выражения иногда еще называют одиночными.
В теле выражения код, указываемый в правой части лямбда-оператора, должен состоять из одного выражения.
Несмотря на все удобство одиночных лямбда-выражений, иногда в них требуется вычислять не одно выражение.
Для подобных случаев в Java предусмотрена вторая разновидность лямбда-выражений, где код, указываемый в правой части лямбда-оператора, может состоять из нескольких операторов. Такие лямбда-выражения называются блочными, а их тело телом блока.
Блочное лямбда-выражение расширяет те виды операций, которые могут выполняться в лямбда-выражении, поскольку оно допускает в своем теле наличие нескольких операторов. Читать
Обобщенные интерфейсы в Java
Помимо классов и методов, обобщенными можно объявлять и нтерфейсы. Обобщенные интерфейсы объявляются таким же образом, как и обобщенные классы.
Ниже приведен характерный тому пример. В нем создается обобщенны йинтерфейс MinMax, где объявляются методы min() и max(), которые, как предполагается, должны возвращать минимальное и максимальное значения из некоторого множества объектов. Читать
Создание обобщенного метода в Java
Как вы наверное знаете, в методах обобщенного класса можно использовать параметр типа, а следовательно, они становятся обобщенными относительно параметра типа.
Но можно объявить обобщенный метод, в котором непосредственно используется один или несколько параметров типа. Более того, можно объявить обобщенный метод, входящий в необобщенный класс.
Начнем рассмотрение обобщенных методов с конкретного примера. В приведенной ниже программе объявляется необобщенный класс GenMethDemo, а в нем - статический обобщенный метод isIn(). Читать
Повторяющиеся аннотации в Java
Еще одна новая возможность, появившаяся в версии JDK 8, позволяет повторять аннотации в одном и том же элементе.
Такие аннотации называются повторяющимися. Для того чтобы сделать аннотацию повторяющейся, ее следует снабдить аннотацией @Repeatable, определенной в пакете java.lang.annotation.
В ее поле value указывается тип контейнера для повторяющейся аннотации. Такой контейнер указывается в виде аннотации, для которой поле value является массивом типа повторяющейся аннотации.
Следовательно, чтобы сделать аннотацию повторяющейся, прежде нужно создать контейнерную аннотацию, а затем указать ее тип в качестве аргумента аннотации @Repeatable.
Для доступа к повторяющимся аннотациями с помощью такого метода, как, например, getAnnotation(), следует воспользоваться контейнерной, а не самой повторяющейся аннотацией. Читать
Получение аннотаций во время выполнения с помощью рефлексии в Java
Аннотации предназначены в основном для использования в инструментальных средствах разработки и развертывания прикладных программ на Java.
Но если они задают правило удержания RUNTIME, то могут быть опрошены во время выполнения в любой программе нa Java с помощью рефлексии.
Рефлексия - это языковое средство для получения сведений о классе во время выполнения программы.
Прикладной программный интерфейс (API) для рефлексии входит в состав пакета jаva.lang.reflect.
Пользоваться рефлексией можно самыми разными способами. Обратимся к нескольким примерам применения рефлексии, имеющим отношение к аннотациям.
Первый шаг с целью воспользоваться рефлексией состоит в получении объекта типа Class. Этот объект представляет класс, аннотацию которого требуется получить. Читать
Предотвращение переопределения с помощью ключевого слова final в Java
Несмотря на то что переопределение методов является одним из самых эффективных языковых средств Java, иногда его желательно избегать.
Чтобы запретить переопределение метода, в начале его объявления следует указать ключевое слово final.
Методы, объявленные как final, переопределяться не могут. Такой способ применения ключевого слова final демонстрируется в приведенном ниже фрагменте кода. Читать
Применение абстрактных классов в Java
Иногда суперкласс требуется определить таким образом, чтобы объявить в нем структуру заданной абстракции, не предоставляя полную реализацию каждого метода
Это означает создать суперкласс, определяющий только обобщенную форму для совместного использования всеми его подклассами, в каждом из которых могут быть добавлены требующиеся детали.
В таком классе определяется характер методов, которые должны быть реализованы в подклассах. Подобная ситуация может, например, возникнуть, когда в суперклассе не удается полностью реализовать метод. Читать