Что будет с бином, если активный профиль не задан?
Anonymous Quiz
27%
Бин будет зарегистрирован в контексте
14%
Произойдет ошибка загрузки контекста из-за отсутствия активного профиля
46%
Бин не будет зарегистрирован в контексте
10%
Все бины с аннотацией @Profile будут зарегистрированы
4%
Ошибка компиляции
👍6🔥1
Как нельзя называть переменные?
Этот вопрос подразумевает ответ из двух частей. Нужно указать, какие есть технические ограничения, и какие стилистические. Стиль – слишком большая тема, не специфичная только для Java, не будем на ней останавливаться.
Технически компилятор налагает одинаковые ограничения на имена как переменных, так и классов, методов, и всего остального. Эти имена обобщенно называются идентификаторы.
Ограничений всего три:
1. Имя целиком не должно совпадать с зарезервированным словом;
2. Первый символ должен проходить проверку методом Character.isJavaIdentifierStart();
3. Остальные символы должны проходить проверку Character.isJavaIdentifierPart().
На практике проверки означают, что имя должно состоять из таких символов Unicode, как:
• Буквы (разных языков)
• Символы валют (такие как $)
• Соединительные символы (такие как _)
• Диакритика (combining mark, non-spacing mark)
• Методы, проходящие Character.isIdentifierIgnorable() (непечатаемые символы, в идентификаторе игнорируются компилятором)
• Цифры, числовые символы (такие как римские числа)
Последний пункт недопустим для первого символа имени. Тип конкретного символа можно узнать методом Character.getType().
Интересно зарезервированное слово var. Оно стоит особняком от других ключевых слов, потому что является зарезервированным только в контексте типа. Использовать var в качестве имени переменной можно.
Java Guru🤓 #java
Этот вопрос подразумевает ответ из двух частей. Нужно указать, какие есть технические ограничения, и какие стилистические. Стиль – слишком большая тема, не специфичная только для Java, не будем на ней останавливаться.
Технически компилятор налагает одинаковые ограничения на имена как переменных, так и классов, методов, и всего остального. Эти имена обобщенно называются идентификаторы.
Ограничений всего три:
1. Имя целиком не должно совпадать с зарезервированным словом;
2. Первый символ должен проходить проверку методом Character.isJavaIdentifierStart();
3. Остальные символы должны проходить проверку Character.isJavaIdentifierPart().
На практике проверки означают, что имя должно состоять из таких символов Unicode, как:
• Буквы (разных языков)
• Символы валют (такие как $)
• Соединительные символы (такие как _)
• Диакритика (combining mark, non-spacing mark)
• Методы, проходящие Character.isIdentifierIgnorable() (непечатаемые символы, в идентификаторе игнорируются компилятором)
• Цифры, числовые символы (такие как римские числа)
Последний пункт недопустим для первого символа имени. Тип конкретного символа можно узнать методом Character.getType().
Интересно зарезервированное слово var. Оно стоит особняком от других ключевых слов, потому что является зарезервированным только в контексте типа. Использовать var в качестве имени переменной можно.
Java Guru🤓 #java
👍11🔥6🌭1
В обычном Java приложении всегда должен быть main class, содержащий метод main. С него начинается исполнение всей программы. Main class-ом может быть не только класс, но и интерфейс или енам. Для JavaFX приложения главный класс должен реализовывать javafx.application.Application.
main обязательно public static. Дополнительно, методу разрешено иметь модификатор strictfp. На аннотации и список исключений ограничений не накладывается.
В главном методе должен быть объявлен единственный аргумент – массив строк. Обе конструкции String[] и String... компилируются в один и тот же байт-код, так что приемлемы оба варианта. Название массива может быть любым, а значение будет содержать аргументы командной строки.
Когда приложение запускается как classpath, главный класс передается параметром командной строки. Если выполняется единственный исходник, он и описывает main class.
Для исполняемого jar-файла (java -jar MyJar.jar), его главный класс должен быть указан в манифесте. Внутри архива, в файл META-INF/MANIFEST.MF добавляется строчка вида Main-Class: ru.itsobes.MyClass. Иначе запуск завершается ошибкой «no main manifest attribute».
В случае, когда в указанном главном классе не оказывается метода, который бы удовлетворял всем критериям главного метода, программа падает с ошибкой «Main method not found».
В апплетах вместо main входной точкой служат методы init и start. Начиная с версии Java 9 технология апплетов объявлена устаревшей, а с 11 – совсем удалена. Не будем останавливаться на них подробнее.
Java Guru🤓 #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7
Как инициализировать переменную функционального интерфейса?
Функциональный интерфейс – всё ещё интерфейс, поэтому остаются доступными стандартные способы. Интерфейс можно реализовать обычным классом, и затем создать его экземпляр оператором new. Можно совместить эти два действия, и создать экземпляр анонимного класса.
Основное преимущество, которое дает функциональный интерфейс – два дополнительных способа инициализации параметров и переменных.
1. Лямбда-выражение: (x, y) -> x * y
2. Ссылка на метод: Math::sqrt
На эти способы накладывается небольшое ограничение: тип функционального параметра/переменной должен быть указан явно. Это значит, что лямбдой или метод-референсом нельзя инициализировать переменную, объявленную ключевым словом var. Также, чтобы передать лямбду или референс в параметр generic-типа, этот тип должен быть ограничен функциональным интерфейсом (должен стираться в него).
Java Guru🤓 #java
Функциональный интерфейс – всё ещё интерфейс, поэтому остаются доступными стандартные способы. Интерфейс можно реализовать обычным классом, и затем создать его экземпляр оператором new. Можно совместить эти два действия, и создать экземпляр анонимного класса.
Основное преимущество, которое дает функциональный интерфейс – два дополнительных способа инициализации параметров и переменных.
1. Лямбда-выражение: (x, y) -> x * y
2. Ссылка на метод: Math::sqrt
На эти способы накладывается небольшое ограничение: тип функционального параметра/переменной должен быть указан явно. Это значит, что лямбдой или метод-референсом нельзя инициализировать переменную, объявленную ключевым словом var. Также, чтобы передать лямбду или референс в параметр generic-типа, этот тип должен быть ограничен функциональным интерфейсом (должен стираться в него).
Java Guru🤓 #java
👍7🔥4🤯1
Какие варианты создания потоков являются верными?
Anonymous Quiz
40%
1, 2, 3
13%
1, 2, 3, 5
4%
1, 4
11%
Только 2
31%
Все верные
👍5🔥3
Что будет в результате вызова метода?
Anonymous Quiz
13%
Исключение при сохранении, но данные первой записи останутся
3%
Исключение при сохранении, но данные второй записи останутся
4%
Исключение при сохранении, но данные обеих записей останутся
5%
Spring игнорирует исключение, данные обеих записей останутся
75%
Откат транзакции, ничего не сохранено
👍7🔥3
Что будет результатом этого кода?
Anonymous Quiz
2%
Программа выведет значения в одном потоке. Только Thread-1 выполнит задачу
9%
Программа выведет значения по очереди. Сначала выполнится Thread-1, затем Thread-2
75%
Результат будет перемешан. Оба потока работают параллельно, порядок вывода строк не гарантируется
3%
Программа выбросит исключение. Использование Runnable без синхронизации вызовет ошибку
11%
Программа не выведет ничего. Потоки завершатся до выполнения задач.
🔥7👍6
К каким полям можно получить доступ из другого пакета?
Anonymous Quiz
1%
privateField
5%
defaultField, protectedField
50%
publicField
3%
Все поля будут недоступны
41%
protectedField, publicField
👍7😐4🔥2❤1🤔1
Почему возможна ошибка во время выполнения кода?
Anonymous Quiz
10%
Метод equals вызывается от null
5%
Поле id не инициализировано
52%
Нет проверки, является ли obj экземпляром BadEquals
4%
Метод equals HE synchronized
29%
Проблема с доступом к полю id
👍5🔥3
Какой из методов Stream возвращает один элемент в результате выполнения?
Anonymous Quiz
6%
filter()
8%
forEach()
62%
reduce()
7%
map()
18%
collect()
👍8🔥3🤨2
Какое поведение будет у Spring Bean, если пометить его @Lazy?
Anonymous Quiz
3%
Бин будет создан при старте приложения
90%
Бин создаётся при первом обращении
1%
Бин создаётся параллельно с другими бинами
2%
Бин будет пропущен
5%
Бин создаётся после завершения всех операций приложения
👍4🔥3
Что будет результатом кода?
Anonymous Quiz
24%
Ошибка компиляции
15%
String varargs
38%
Object
9%
NullPointerException
14%
AmbiguousMethodCallException
👍9🔥3