Взаимосвязь между Java и языками С, С++ и C#

Взаимосвязь между Java и языками С, С++ и C#

Язык Java очень похож на языки С и С++. От С язык Java унаследовал синтаксис, а от С++ — объектную модель.

Сходство Java с языками С и С++ играет важную роль. Во-первых, многие программисты знакомы с синтаксисом С и С++, что упрощает изу­чение языка Java. Те же, кто освоил Java, могут без труда изучить С и С++.

Во-вторых, тем, кто программирует на Java, не приходится изобретать колесо. Они могут успешно применять уже известные и хорошо зарекомендовавшие себя подходы.

Современная эпоха в программировании, по существу, началась с языка С. Затем поя­вился язык С++, а после него — Java. Читать

Импорт пакетов в Java

Импорт пакетов в Java

Если вспомнить, что пакеты предлагают эффективный механизм изоляции раз­личных классов друг от друга, то становится понятно, почему все встроенные классы Java хранятся в пакетах.

Ни один из основных классов Java не хранится в неимено­ванном пакете, используемом по умолчанию. Все стандартные классы непременно хранятся в каком-нибудь именованном пакете.

А поскольку в самих пакетах классы должны полностью определяться по именам их пакетов, то длинное, разделяемое точками имя пути к пакету каждого используемого класса может оказаться слишком громоздким.

Следовательно, чтобы отдельные классы или весь пакет можно было сде­лать доступными, в Java внедрен оператор import.

После того как класс импортиро­ван, на него можно ссылаться непосредственно, используя только его имя. Читать

Лямбда-выражения и исключения в Java

Лямбда-выражения и исключения в Java

Лямбда-выражение может генерировать исключение. Но если оно генерирует проверяемое исключение, то последнее должно быть совместимо с исключени­ями, перечисленными в выражении throws из объявления абстрактного метода в функциональном интерфейсе.

Эта особенность демонстрируется в приведенном ниже примере, где вычисляется среднее числовых значений типа double в масси­ве. Читать

Передача лямбда-выражений в качестве аргументов в Java

Передача лямбда-выражений в качестве аргументов в Java

Как известно, лямбда-выражение может быть использовано в любом контексте, предоставляющем его целевой тип

Один из таких контекстов возни­кает при передаче лямбда-выражения в качестве аргумента.

В действительностипередача лямбда-выражений в качестве аргументов является весьма распростра­ненным примером их применения.

Более того, это весьма эффективное их при­менение, поскольку оно дает возможность передать исполняемый код методу в качестве его аргумента.

Благадоря этому значительно повышается выразительная сила Java. Читать

Блочные лямбда выражения в Java

Блочные лямбда выражения в Java

Тело лямбда-выражений обычно состоят из единственного выражения. Такая разновидность тел называется телом выражения, а лямбда-выра­жения с телом выражения иногда еще называют одиночными.

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

Несмотря на все удобство одиночных лямбда-выражений, иногда в них требуется вычислять не одно выражение.

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

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

Обобщенные интерфейсы в Java

Обобщенные интерфейсы в Java

Помимо классов и методов, обобщенными можно объявлять и нтерфейсы. Обобщенные интерфейсы объявляются таким же образом, как и обобщенные классы.

Ниже приведен характерный тому пример. В нем создается обобщенны йинтерфейс MinMax, где объявляются методы min() и max(), которые, как предпо­лагается, должны возвращать минимальное и максимальное значения из некото­рого множества объектов. Читать

Создание обобщенного метода в Java

Создание обобщенного метода в Java

Как вы наверное знаете, в методах обобщенного класса можно использовать параметр типа, а следовательно, они становятся обобщенными относительно параметра типа.

Но можно объявить обобщенный метод, в кото­ром непосредственно используется один или несколько параметров типа. Более того, можно объявить обобщенный метод, входящий в необобщенный класс.

Начнем рассмотрение обобщенных методов с конкретного примера. В приведенной ниже программе объявляется необобщенный класс GenMethDemo, а в нем — статический обобщенный метод isIn(). Читать

Повторяющиеся аннотации в Java

Повторяющиеся аннотации в JavaЕще одна новая возможность, появившаяся в версии JDK 8, позволяет повто­рять аннотации в одном и том же элементе.

Такие аннотации называются повторяющимися. Для того чтобы сделать аннотацию повторяющейся, ее следует снаб­дить аннотацией @Repeatable, определенной в пакете java.lang.annotation.

В ее поле value указывается тип контейнера для повторяющейся аннотации. Такой контейнер указывается в виде аннотации, для которой поле value является масси­вом типа повторяющейся аннотации.

Следовательно, чтобы сделать аннотацию повторяющейся, прежде нужно создать контейнерную аннотацию, а затем указать ее тип в качестве аргумента аннотации @Repeatable.

Для доступа к повторяющимся аннотациями с помощью такого метода, как, на­пример, getAnnotation(), следует воспользоваться контейнерной, а не самой повторяющейся аннотацией. Читать

Получение аннотаций во время выполнения с помощью рефлексии в Java

Получение аннотаций во время выполнения с помощью рефлексии в Java

Аннотации предназначены в основном для использования в инструментальных средствах разработки и развертывания прикладных программ на Java.

Но если они задают правило удержания RUNTIME, то могут быть опрошены во время вы­полнения в любой программе нa Java с помощью рефлексии.

Рефлексия — это языко­вое средство для получения сведений о классе во время выполнения программы.

Прикладной программный интерфейс (API) для рефлексии входит в состав пакета jаva.lang.reflect.

Пользоваться рефлексией можно самыми разными способа­ми. Обратимся к нескольким примерам применения рефлексии, имеющим отношение к аннотациям.

Первый шаг с целью воспользоваться рефлексией состоит в получении объек­та типа Class. Этот объект представляет класс, аннотацию которого требуется по­лучить. Читать

Основные положения о перечислениях в Java

Основные положения о перечислениях в JavaДо версии JDK5 явно недоставало перечислений — одного из языковых средств, потребность в котором остро ощущали многие программирующие нa Java.

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

В версии JDК5 перечисления были внедрены в Java и наконец-то стали до­ступны для программирования на этом языке.

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