Java

Можно ли переопределить статический метод?

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

Читать полностью

Для чего нужно ключевое слово super?

super можно использовать для того чтобы: Указать нижнюю границу для дженерика, это можно сделать так: Consumer<? super Number>; С помощью super можно обратиться к перекрытым локальным переменным или методам родительского класса, например: int shadowedFoo = super. ShadowedFoo; Он позволяет запустить…

Читать полностью

Что можно импортировать статически?

Простой импорт позволяет не задавать полное имя используемого класса, то есть пакет писать не обязательно. Статический импорт позволяет делать то же, но для static членов требуемого класса. Обычно он нужен для использования константных интерфейсов, а также для включения static методов.…

Читать полностью

Как инициализировать переменную ФИ?

Реализация выполняется уже известными способами, действующими для всех интерфейсов: через простой класс и создание его экземпляра, с помощью метода new, можно также объявить экземпляр, принадлежащий анонимному Java-классу. Для ФИ также доступны нестандартные варианты инициализации: Используя лямбда, например, так: (x, y)…

Читать полностью

Что такое функциональный интерфейс?

Функциональный интерфейс – это разновидность интерфейса, в котором определена функция обратного вызова (callback). В функциональном интерфейсе может быть всего один абстрактный метод, в нём может находиться неограниченное число методов default, а также переобъявленные методы, наследуемые от Object. Функциональный метод может…

Читать полностью

В чем разница между JavaEE, JavaSE и JavaME?

Язык Java, в пределах каждой выпускаемой версии, практически идентичен, но есть модификации:  Standard Edtion (SE) – базовый набор операций;  Enterprise Edtion (EE) – в эту версию входят дополнительные инструменты для разработки корпоративных серверных приложений и web-технологий; Micro Edtion (ME) –…

Читать полностью

Чем отличается Closeable от AutoCloseable?

Интерфейс AutoCloseable появился в седьмой версии Java. Он представляет собой объект, предназначенный для хранения какого-либо ресурса до тех пор, пока он открыт. Он имеет только один метод close(), в котором прописаны команды, выполняемые при закрытии ранее задействованного ресурса. Особенностью данного…

Читать полностью

Можно ли поймать Error?

Теоретически Error, как и все другие исключения, относящиеся к Throwable, перехватываются в catch. Код в нём должен быть валидным и компилироваться без ошибок. Error, а также все его подклассы возникают во время выполнения, они являются нестандартными, которые в обычных условиях…

Читать полностью

Как скопировать массив?

Перечислим основные методы: Object.clone() копирует массив полностью, не имеет никаких аргументов; System.arraycopy() переносит данные из одного массива, начиная с заданной позиции в целевой массив (вставка начинается с заданной позиции); Arrays.copyOf() копирует исходный массив, усекая его или дополняя нулями, чтобы копия…

Читать полностью

Что значит ArrayStoreExceptіon?

ArrayStoreExcepton может появиться при попытке добавить в массив переменную недопустимого типа. Осуществить это можно, так как массивы ковариантны. Поэтому они могут использовать массивы того же типа, что и их родители. Используя операцию приведения к классу Object[] можно попробовать добавить любой…

Читать полностью

Что будет если блок finally выбросит ошибку?

Как известно, последовательность операций, записанная finally, должна выполняется в любом случае, независимо от того появлялась ли ошибка в try. Если ошибки в try не возникало, то при появлении его в finally оно пойдёт по стеку исключений, до тех пор, пока…

Читать полностью

Как в лямбде изменить внешнюю локальную переменную?

Изменить локальную переменную, в ламбде, стандартными методами невозможно, потому, что локальная переменная должны быть effectively final, то есть не должна изменяться после объявления. Это сделано потому что локальная переменная помещается в стек, поэтому её время жизни ограничено скоупом. Однако экземпляр…

Читать полностью

Как объявить переменное количество аргументов метода?

Для передачи в метод переменного количества аргументов, применяют массив, в котором будет храниться нужное количество переменных. В Java 5 появилась конструкция vararg. В этом случае между типом аргумента произвольной длинны и её именем требуется поставить три точки (…), и можно…

Читать полностью

Чем анонимный внутренний класс отличается от лямбды?

Лямбда выражения, используемые в языке Java, считаются синтаксическим сахаром и отличаются легковесным синтаксисом. При их применении не требуется задавать тип реализуемого функционального интерфейса, его компилятор определяет из контекста. У анонимного внутреннего класса могут быть поля, и можно менять их значение…

Читать полностью

Как работает вывод типов?

Выводом типов, в языке Java, называется функция компилятора определять вместо вас требуемый тип. Чтобы успешно пройти интервью требуется знать, что определение нужного типа осуществляется на основании знания параметров передаваемых аргументов и выдаваемого результата. diamond operator <> впервые был введён в…

Читать полностью

Что такое ковариантность и контравариантность?

Ковариантность – следование существующей иерархии (последовательности) наследования. Например, если класс Dog наследник Animal, то IEnumerble <Dog> будет потомком IEnumerble <Animal>. Перечисление собак – отдельный случай перечисления всех животных. Контравариантность – это изменение порядка наследования на противоположную. Рассмотрим следующий вариант. String…

Читать полностью

Как узнать, является ли A подтипом B?

В языке Java существует три способа, которыми можно проверить совместимость типов. Во-первых, с помощью оператора instanceof. В нем в качестве первого аргумента передаётся экземпляр класса А, второй аргумент имя проверяемого класса В. Если экземпляр А не принадлежит к цепочке наследования…

Читать полностью

Перечислите целочисленные битовые операторы

Основные битовые операторы: & – операция побитовое И; | – операция побитовое ИЛИ; ^ – операция побитовое исключающее ИЛИ. У этой операции есть следующие особенности: при применении его к одному числу вторично, с тем же параметром, возвращает первоначальное значение числа.…

Читать полностью

Что такое короткое замыкание логического оператора?

Операторы И (&&) и ИЛИ (||) выполняются слева направо, то есть, если при последовательном вычислении, левая часть оператора И (&&) окажется равной false, то правая часть выполняться не будет, так как всё равно в результате получиться false. То же самое…

Читать полностью

В каком порядке указываются модификаторы?

При размещении модификаторов полей нужно соблюдать следующие правила: модификатор можно указывать только один раз; одновременно можно указывать только один модификатор доступа. В общем случае, записывать модификаторы можно в произвольном порядке. Но рекомендуется сначала указывать модификаторы @аннотации, потом доступа, далее static,…

Читать полностью