Метод
Files.isReadable() из java.nio.file проверяет, доступен ли файл для чтения. Это полезно для предварительной проверки перед открытием файла.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Метод
CompletableFuture.thenCombine() позволяет объединить результаты двух асинхронных задач после их завершения. Это полезно для выполнения зависимых операций без блокирования потоков.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4🎄1
Пояснение
Метод append добавляет " World" в конец строки, а insert вставляет запятую на позицию 5 (после Hello). Результирующая строка: Hello, World. Код выполняется корректно.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
👍7
Пояснение
При попытке деления на ноль возникает исключение ArithmeticException, которое перехватывается в блоке catch. Блок finally всегда выполняется независимо от того, произошло ли исключение. Поэтому вывод включает обе строки.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Что такое эффективная финализация (Effective Finality) в Java и как она связана с анонимными классами и лямбда-выражениями?
Ответ
Пример использования
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
int number = 10;
Consumer<Integer> consumer = value -> {
System.out.println(value + number); // Использование effectively final переменной
};
consumer.accept(5); // Вывод: 15
// number = 20; // Ошибка: переменная number должна быть эффективно финализированной
}
}
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1🎄1
Метод
Stream.iterate() используется для создания бесконечного или конечного потока, начиная с начального значения и применяя к нему функцию обновления. Это полезно для генерации последовательностей или потоков данных.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1🎄1
Метод
Instant.now() из пакета java.time возвращает текущее время в UTC с высокой точностью. Это полезно для работы с временными метками в приложениях, где важна точность времени.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔1
Метод
partitioningBy из класса Collectors используется для разделения элементов потока на две группы, основываясь на предикате. Он возвращает карту с двумя списками: одна группа удовлетворяет предикату, другая — нет.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥4
Метод
Collectors.teeing, представленный в Java 12, позволяет объединять результаты двух различных коллекторов в одном Stream. Это делает его полезным для выполнения нескольких операций над потоком данных одновременно.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Пояснение
Когда класс реализует два интерфейса с одинаковыми default методами, требуется явное указание, какой метод вызывать. В данном коде в методе show() вызываются A.super.show () и B.super.show (), поэтому выполняются оба метода. Код компилируется и корректно выводит A's show и B's show.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
👍6🎄3
Использование списка
List для проверки наличия элемента приводит к линейной сложности O(n), что делает такую операцию медленной для больших наборов данных.Set, который обеспечивает время выполнения O(1) для операций поиска.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥1
Метод
MethodHandle.invokeExact() из пакета java.lang.invoke позволяет вызывать метод или конструктор через ссылку MethodHandle. Это мощный инструмент для динамического вызова методов с высокой производительностью.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Метод
Stream.generate() используется для создания бесконечного потока элементов, генерируемых функцией. Это полезно для создания потоков случайных данных, шаблонов или повторяющихся значений.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Как работают захваты переменных (
variable capture) в лямбда-выражениях Java, и какие ограничения на них накладываются?Ответ
Это ограничение связано с тем, что лямбды могут выполняться в другой потоковой среде, и изменение переменной вне лямбды может привести к непредсказуемым результатам.
Пример использования
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
int base = 10;
Consumer<Integer> multiplier = value -> {
System.out.println(value * base); // Использование захваченной переменной
};
multiplier.accept(5); // Вывод: 50
// base = 20; // Ошибка компиляции: переменная должна быть effectively final
}
}
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🎄1
Метод
MethodHandles.privateLookupIn позволяет получить доступ к приватным методам, полям и конструкторам класса через MethodHandle. Это мощный и редкий инструмент для работы с закрытыми членами классов.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Метод
ManagementFactory.getRuntimeMXBean() предоставляет доступ к информации о времени выполнения Java-программы, включая аргументы командной строки, идентификатор процесса (PID) и время запуска. Это полезно для мониторинга и диагностики приложений.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6