Java

Как происходит наследование если оба реализуемых интерфейса объявляют один и тот же метод?

В том случае, когда объявления полностью идентичны, в класс, реализующий эти интерфейсы определяет требуемый метод. В том случае, если методы возвращают разные типы, тот все зависит от самих типов. Как известно, начиная с 5 версии Java переопределение ковариантно по отношению…

Читать полностьюКак происходит наследование если оба реализуемых интерфейса объявляют один и тот же метод?

Как поменять значение приватного finall поля на другое

В первую очередь нужно знать, что такое действие слишком плохая практика, противоречащая принципу сокрытия информации. Для того чтобы это сделать нужно обратиться к Reflection API. Для этого нужно: ·        чтобы получить дескриптор нужного поля, вызываем метод getDeclaredField()…

Читать полностьюКак поменять значение приватного finall поля на другое

Что такое Reflection?

Reflection – это инструмент метапрограммирования, который даёт средства, с помощью которых можно манипулировать данными, зная структуру конкретного класса, к которым эта информация относятся. Class<T> является входом в рефлексию. В экземплярах данного класса содержится информация о требуемом классе. Имеющиеся способы получить…

Читать полностьюЧто такое Reflection?

В каком случае результатом выполнения Class.getClassLoader будет null?

Чтобы ответить на этот вопрос нужно разобраться в двух темах. Во-первых, экземпляры, относящиеся к Class<T>, являются описанием типов, где считается что перечисления – это классы, а аннотации идентичны интерфейсам. Экземпляры, принадлежащие Class<T> хранят, в основном, ту же информацию, что и…

Читать полностьюВ каком случае результатом выполнения Class.getClassLoader будет null?

Как создаётся экземпляр класса?

На первом этапе загружается сам класс, вместе со своими предками. Класс загружается всего раз, во время 1-го упоминания данного класса. Когда загрузка закончится, начинается процесс выделения памяти под имеющиеся в нём static поля и начинают выполняться команды, прописанные в static…

Читать полностьюКак создаётся экземпляр класса?

Зачем нужен тип enum?

Enum является классом со всеми свойствами финального, у которого имеются поля, объявленные по умолчанию как final и экземпляры, также финальные. Им нельзя расширять классы, но с его помощью можно реализовывать интерфейсы. Перечисление Enum является сравнимым (Comparable) и сериализируемым (Serializable). В…

Читать полностьюЗачем нужен тип enum?

Какие модификаторы доступа есть в языке Java?

В Java их четыре: public – отсутствуют ограничения на доступ; protected – предоставляет доступ из классов, входящих в пакет и из всех наследников; private – доступ возможен только из исходного класса и внутренний или вложенных в него классов; pakage-private –…

Читать полностьюКакие модификаторы доступа есть в языке Java?

Для чего используется модификатор static?

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

Читать полностьюДля чего используется модификатор static?

Что делают загрузчики классов?

В языке Java применяется динамический тип загрузки используемых классов, которую выполняют лоадеры (они же загрузчики). Они происходят от класса ClassLoader, который является абстрактным. Также они отвечают за загрузку прочих файлов, в которых содержаться ресурсы. Загрузка элементов ссылочного типа, в том…

Читать полностьюЧто делают загрузчики классов?

Какие примитивные типы предусмотрены в языке Java?

Всего в Java предусмотрено 8 примитивных типов данных, это: byte – целое лежащее в диапазоне от 2^7 до 2^7-1; short – целое лежащее в диапазоне от 2^15 до 2^15-1; с– целое лежащее в диапазоне от 2^31 до 2^31-1; long– целое…

Читать полностьюКакие примитивные типы предусмотрены в языке Java?

Лишает ли var строгой типизации?

Слово var впервые появилось было введено в десятой версии Java. Оно указывает, что тип переменной определяется при компиляции, в зависимости от того, чем данная переменная будет проинициализирована. Из этого следует что: var можно использовать только для локальных переменных; они нуждаются…

Читать полностьюЛишает ли var строгой типизации?

Отличаются ли сокращенные и обычные операторы?

К сокращенным или как их официально называют операторам сложного присваивания относятся, например, *= или |=. При их применении нужно учитывать один нюанс. Оператор x *= y эквивалентен x = (XType)(x + y). Таким образом при выполнении этих операторов происходит неявное…

Читать полностьюОтличаются ли сокращенные и обычные операторы?

Какие бывают проблемы с арифметикой в Java?

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

Читать полностьюКакие бывают проблемы с арифметикой в Java?

Как сравнивать элементы перечисления?

Компилятор преобразует экземпляры enum в static константы, которые к тому же являются singleton-ами. Поэтому, для сравнения можно использовать «==». Все классы наследуются от java.lang.Enum. При этом все методы, кроме toStrng являются финальными. Поэтому, функция equals, также подходит для сравнения перечислений.…

Читать полностьюКак сравнивать элементы перечисления?

Может ли название класса не совпадать с названием файла?

В файле *java должен находиться единственный главный публичный класс, при этом его название обязано быть тем же что и у файла, в котором он расположен. Классов, определённых как protected и private не существует. Но на package-protected class приведенное выше правило…

Читать полностьюМожет ли название класса не совпадать с названием файла?

Как обойти коллекцию?

Существуют следующие способы: С помощью циклов for или while. В этом случае индексная переменная увеличивается от 0 до размера коллекции, определить который можно с помощью функции size(). В этом случае можно организовать неполный обход или обход с не стандартным шагом.…

Читать полностьюКак обойти коллекцию?

Что будет со ссылкой на метод, если заменить объект-владельца?

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

Читать полностьюЧто будет со ссылкой на метод, если заменить объект-владельца?

Когда нужно использовать raw types?

Как известно, raw type – это такие generic-типы, которые используются без задания типа-параметра. Данная конструкция допустима, но часто приводит к появлению warning от компилятора. Это связано с риском возникновения ситуации, которая называется heap pollution, это когда переменная, относящаяся к параметризированному…

Читать полностьюКогда нужно использовать raw types?

В чем различие между приватным конструктором и финальным классом?

Если установить модификатор видимости для конструктора класса private, то его нельзя будет запустить из класса наследника, а это означает что наследование станет невозможным. Эту возможность обычно используют для создания утилитарных классов и в паттерне singleton. Модификатор final запрещает наследование от…

Читать полностьюВ чем различие между приватным конструктором и финальным классом?

Как ведут себя конфликтующие импорты?

Классы, входящие в текущий используемый пакет можно использовать без импорта. При импорте class, идентичного по имени с соседним по пакету, он будет перекрыт. В таком случае будет использоваться импортированный class, при этом никакой ошибки компилятор не выдаст. Если в одном…

Читать полностьюКак ведут себя конфликтующие импорты?