class Cat {
public static void mew() {
System.out.println("Meow");
}
}
class SimonsCat extends Cat {
public static void mew() { }
}
public class Mew {
public static void main(String[] args) {
Cat cat = new Cat();
Cat simonsCat = new SimonsCat();
cat.mew();
simonsCat.mew();
}
}👍6👏2
Retrofit - это библиотека для работы с HTTP-запросами в Java и Android, разработанная компанией Square. Основной целью Retrofit является упрощение выполнения сетевых запросов и преобразование HTTP-ответов в объекты Java. Retrofit использует аннотации Java для определения типа запроса, параметров, URL и других свойств.
Retrofit предоставляет удобный способ выполнения асинхронных запросов. Вы можете использовать
Retrofit поддерживает использование интерсепторов для манипуляции запросами и ответами. Это может быть полезно для добавления заголовков, логирования и других операций.
Библиотека Retrofit предоставляет удобные средства для работы с сетевыми запросами, уменьшая объем необходимого кода и обеспечивая чистый и читаемый интерфейс для взаимодействия с удаленными API.
Retrofit предоставляет удобный способ выполнения асинхронных запросов. Вы можете использовать
Call как для выполнения синхронного вызова (call.execute()), так и для выполнения запросов асинхронно (call.enqueue(...)).Retrofit поддерживает использование интерсепторов для манипуляции запросами и ответами. Это может быть полезно для добавления заголовков, логирования и других операций.
Библиотека Retrofit предоставляет удобные средства для работы с сетевыми запросами, уменьшая объем необходимого кода и обеспечивая чистый и читаемый интерфейс для взаимодействия с удаленными API.
👍11👏3❤1
Несколько способов для избежания NullPointerException:
👉 Используйте
👉 При сравнении константы с переменной пришедшей из вне, нужно вызывать
👉 А при сравнении двух переменных используйте
👉 Используйте библиотеки с null-безопасностью, например, Apache Commons StringUtils.
👉 Вызывайте методы
👉 Применяйте
👉 Воспользуйтесь аннотациями
👉 При возврате из метода коллекций, не стоит возвращать
👉 Используйте
Optional из пакета java.util.👉 При сравнении константы с переменной пришедшей из вне, нужно вызывать
equals() на константе.👉 А при сравнении двух переменных используйте
java.util.Objects#equals.👉 Используйте библиотеки с null-безопасностью, например, Apache Commons StringUtils.
👉 Вызывайте методы
equals() и equalsIgnoreCase() на известных объектах.👉 Применяйте
valueOf() вместо toString().👉 Воспользуйтесь аннотациями
@NotNull и @Nullable на основе IDE.👉 При возврате из метода коллекций, не стоит возвращать
null, лучше пустую коллекцию (java.util.Collections#emptyList).🔥24👍11
Метод retainAll()
Метод
Параметры:
c –
Возврат:
true
Метод
retainAll() интерфейса Collection, удаляет из коллекции все элементы, не содержащиеся в переданной коллекции. По сути оставляет в коллекции только пересекающиеся элементы из двух коллекций.
boolean retainAll(Collection<?> c);
Параметры:
c –
коллекция, содержащая элементы, которые следует сохранить в коллекции.Возврат:
true
, если коллекция изменилась в результате вызова👍22🏆1
BIRT (Business Intelligence and Reporting Tools) - это открытая платформа, предоставляющая возможности для создания отчетов и бизнес-аналитики в приложениях, разрабатываемых на языке программирования Java. Эта платформа предоставляет инструменты для создания, развертывания и поддержки отчетов различной сложности.
Вот несколько ключевых аспектов BIRT:
Дизайнер отчетов (BIRT Designer)
BIRT предоставляет визуальный дизайнер отчетов, который позволяет разработчикам создавать отчеты с использованием различных элементов, таких как таблицы, графики, текстовые блоки и т.д. Этот дизайнер встроен в Eclipse IDE, что упрощает интеграцию с существующими проектами Java.
Интеграция с Java-приложениями
BIRT обеспечивает простую интеграцию с Java-приложениями. Вы можете использовать BIRT Runtime API для встраивания отчетов в свои приложения. Это позволяет вам создавать динамические отчеты, которые могут быть сгенерированы на лету в ответ на запросы пользователей.
Поддержка различных источников данных
BIRT может работать с различными источниками данных, такими как базы данных (SQL, JDBC), веб-службы, XML-файлы и другие. Это обеспечивает гибкость при работе с данными из различных источников.
Мощные возможности форматирования
BIRT предоставляет обширные возможности по форматированию отчетов. Вы можете настраивать внешний вид отчетов, включая шрифты, цвета, стили линий, и т.д.
Генерация различных форматов отчетов
BIRT поддерживает генерацию отчетов в различных форматах, таких как HTML, PDF, Excel, Word и другие. Это позволяет пользователям получать отчеты в удобных для них форматах.
Система расширений
BIRT предоставляет механизм для создания пользовательских расширений, что позволяет разработчикам расширять функциональность платформы в соответствии с конкретными требованиями проекта.
Открытый исходный код
BIRT является проектом с открытым исходным кодом, что обеспечивает доступность и гибкость для разработчиков. Это также означает наличие сообщества, которое может предоставить поддержку и ресурсы для пользователей BIRT.
Для начала работы с BIRT, вы можете загрузить Eclipse IDE, которая включает в себя BIRT Designer. После установки вы сможете создавать, редактировать и интегрировать отчеты BIRT в ваши Java-приложения.
Вот несколько ключевых аспектов BIRT:
Дизайнер отчетов (BIRT Designer)
BIRT предоставляет визуальный дизайнер отчетов, который позволяет разработчикам создавать отчеты с использованием различных элементов, таких как таблицы, графики, текстовые блоки и т.д. Этот дизайнер встроен в Eclipse IDE, что упрощает интеграцию с существующими проектами Java.
Интеграция с Java-приложениями
BIRT обеспечивает простую интеграцию с Java-приложениями. Вы можете использовать BIRT Runtime API для встраивания отчетов в свои приложения. Это позволяет вам создавать динамические отчеты, которые могут быть сгенерированы на лету в ответ на запросы пользователей.
Поддержка различных источников данных
BIRT может работать с различными источниками данных, такими как базы данных (SQL, JDBC), веб-службы, XML-файлы и другие. Это обеспечивает гибкость при работе с данными из различных источников.
Мощные возможности форматирования
BIRT предоставляет обширные возможности по форматированию отчетов. Вы можете настраивать внешний вид отчетов, включая шрифты, цвета, стили линий, и т.д.
Генерация различных форматов отчетов
BIRT поддерживает генерацию отчетов в различных форматах, таких как HTML, PDF, Excel, Word и другие. Это позволяет пользователям получать отчеты в удобных для них форматах.
Система расширений
BIRT предоставляет механизм для создания пользовательских расширений, что позволяет разработчикам расширять функциональность платформы в соответствии с конкретными требованиями проекта.
Открытый исходный код
BIRT является проектом с открытым исходным кодом, что обеспечивает доступность и гибкость для разработчиков. Это также означает наличие сообщества, которое может предоставить поддержку и ресурсы для пользователей BIRT.
Для начала работы с BIRT, вы можете загрузить Eclipse IDE, которая включает в себя BIRT Designer. После установки вы сможете создавать, редактировать и интегрировать отчеты BIRT в ваши Java-приложения.
👍7🔥1🏆1
Метод putIfAbsent() интерфейса
Параметры:
key
Возврат:
предыдущее значение, связанное с указанным ключом, или значение null
Map. Если указанный ключ еще не связан со значением (или сопоставлен со значением null), он связывает его с заданным значением и возвращает значение null, в противном случае возвращается текущее значение.
default V putIfAbsent(K key, V value) {
V v = get(key);
if (v == null) {
v = put(key, value);
}
return v;
}
Параметры:
key
– ключ, с которым должно быть связано указанное значение. value – значение, которое должно быть связано с указанным ключом.Возврат:
предыдущее значение, связанное с указанным ключом, или значение null
, если для ключа не было сопоставления. Возврат null может также указывать на то, что мапа ранее ассоциировала с ключом значение null, если реализация поддерживает значения null.👍6🔥1
Нет. В таком случае компилятор выдаст ошибку:
"Illegal combination of modifiers: ‘abstract’ and ‘static’". Модификатор
abstract говорит, что метод будет реализован в другом классе, а static наоборот указывает, что этот метод будет доступен по имени класса.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🎄3
Класс, помеченный модификатором
abstract, называется абстрактным классом. Такие классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов.Метод, помеченный ключевым словом
abstract - абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным.Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥3🎄1
byte — (byte)0;
short — (short)0;
int — 0;
long — 0L;
float — 0f;
double — 0d;
char — \u0000;
boolean — false;
Объекты (в том числе String) — null.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥3
С помощью ключевого слова
super мы можем обратиться к любому члену родительского класса - методу или полю, если они не определены с модификатором private.super.method();
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🎄3☃1⚡1
void и Void
В языке программирования Java ключевое слово
Для
Этот класс можно использовать, например, в случаях, когда у вас есть обобщенный класс и вы хотите, чтобы метод ничего не возвращал (т.е. чтобы пользователь класса не ожидал ничего особенного оттуда получить):
Или если в проекте регулярно используется Call
В языке программирования Java ключевое слово
void используется для указания, что метод не возвращает никакого значения. Метод с возвращаемым типом void выполняет определенные действия, но не производит результат, который можно было бы использовать в вызывающей части программы.Для
void еще есть класс обёртка Void. Класс Void — это класс-заполнитель который нельзя создать и который хранит ссылку на объект Class, представляющий ключевое слово Java void.Этот класс можно использовать, например, в случаях, когда у вас есть обобщенный класс и вы хотите, чтобы метод ничего не возвращал (т.е. чтобы пользователь класса не ожидал ничего особенного оттуда получить):
interface I<T> {
T doStuff();
}
class A implements I<Void> {
@Override
public Void doStuff() {
// ничего другого вернуть нельзя
return null;
}
}
Или если в проекте регулярно используется Call
able<T> для выполнения каких-то асинхронных задач и в тех ситуациях, когда результат работы задачи ничего не должен возвращать, можно реализовать Callable<Void>.👍16❤2🔥1👏1
Generics - это технический термин, обозначающий набор свойств языка позволяющих определять и использовать обобщенные типы и методы. Обобщенные типы или методы отличаются от обычных тем, что имеют типизированные параметры.
Примером использования обобщенных типов может служить Java Collection Framework. Так, класс
LinkedList<E> - типичный обобщенный тип. Он содержит параметр E, который представляет тип элементов, которые будут храниться в коллекции. Создание объектов обобщенных типов происходит посредством замены параметризированных типов реальными типами данных. Вместо того, чтобы просто использовать LinkedList, ничего не говоря о типе элемента в списке, предлагается использовать точное указание типа LinkedList<String>, LinkedList<Integer> и т.п.Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1
Assert (Утверждение) — это специальная конструкция, позволяющая проверять предположения о значениях произвольных данных в произвольном месте программы. Утверждение может автоматически сигнализировать об обнаружении некорректных данных, что обычно приводит к аварийному завершению программы с указанием места обнаружения некорректных данных.
Утверждения существенно упрощают локализацию ошибок в коде. Даже проверка результатов выполнения очевидного кода может оказаться полезной при последующем рефакторинге, после которого код может стать не настолько очевидным и в него может закрасться ошибка.
Обычно утверждения оставляют включенными во время разработки и тестирования программ, но отключают в релиз-версиях программ.
Так как утверждения могут быть удалены на этапе компиляции либо во время исполнения программы, они не должны менять поведение программы. Если в результате удаления утверждения поведение программы может измениться, то это явный признак неправильного использования
assert. Таким образом, внутри assert нельзя вызывать методы, изменяющие состояние программы, либо внешнего окружения программы.В Java проверка утверждений реализована с помощью оператора
assert, который имеет форму:assert [Выражение типа boolean]; или assert [Выражение типа boolean] : [Выражение любого типа, кроме void];Во время выполнения программы в том случае, если поверка утверждений включена, вычисляется значение булевского выражения, и если его результат
false, то генерируется исключение java.lang.AssertionError. В случае использования второй формы оператора assert выражение после двоеточия задаёт детальное сообщение о произошедшей ошибке (вычисленное выражение будет преобразовано в строку и передано конструктору AssertionError).Please open Telegram to view this post
VIEW IN TELEGRAM
👍11☃1🐳1
Метод containsAll() интерфейса
Параметры:
c – коллекция, которую необходимо проверить на предмет содержания в этой коллекции
Возврат:
true
Collection проверяет входят ли в коллекцию все элементы переданной в параметре коллекции.
boolean containsAll(Collection<?> c);
Параметры:
c – коллекция, которую необходимо проверить на предмет содержания в этой коллекции
Возврат:
true
, если эта коллекция содержит все элементы указанной коллекции👍6🔥2
С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🔥5☃1🆒1
Поскольку строки неизменяемы, их хэш код вычисляется и кэшируется в момент создания, не требуя повторного пересчета при дальнейшем использовании. Поэтому в качестве ключа
HashMap они будут обрабатываться быстрее.Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤2🎄2☃1🍾1
Если у какого-либо класса не определить конструктор, то компилятор сгенерирует конструктор без аргументов - так называемый «конструктор по умолчанию».
public ClassName() {}
Если у класса уже определен какой-либо конструктор, то конструктор по умолчанию создан не будет и, если он необходим, его нужно описывать явно.
Please open Telegram to view this post
VIEW IN TELEGRAM
☃12🎄3🎉2
С наступающим новым годом, друзья! Пусть всё получается, всё удается, ничего не зависает и не стоит на месте. Желаю, чтобы жизнь была интересной и захватывающей, чтоб не было времени на грусть и тоску, обиды и разочарования!
Пусть любое дело увенчается успехом, а твои достижения помогут достичь карьерного роста и технического прогресса!
Свежих идей и ярких воплощений нам всем!🎉 🍾🥂🎁
Пусть любое дело увенчается успехом, а твои достижения помогут достичь карьерного роста и технического прогресса!
Свежих идей и ярких воплощений нам всем!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉45☃10🍾6🎄3🤩2🤝1🎅1