Использование `Optional` исключительно для вызова метода `map` и избежания создания промежуточной переменной действительно возможно и может показаться элегантным решением в некоторых случаях. Однако стоит учитывать несколько моментов.
1. **Цель использования `Optional`**: Основная цель класса `Optional` — это представление потенциально отсутствующих значений и обработка этих случаев без использования `null`. Использование `Optional` просто для удобства в создании объекта может быть ошибочным.
2. **Проблемы с использованием `get()`**: Если результат метода `getSomething()` может быть `null`, вызов `get()` на `Optional`, который может быть пустым, приведет к `NoSuchElementException`. Чтобы избежать этого, нужно быть уверенным, что `getSomething()` никогда не возвращает `null`, или обрабатывать случай отсутствующего значения более безопасно — используя `orElse`, `orElseGet`, `orElseThrow` и другие методы.
3. **Читаемость кода**: Код, который использует `Optional` для создания объекта, может быть менее читаемым. Использование `Optional` подразумевает, что вы обрабатываете возможное отсутствие значения, и если у вас нет такой ситуации, может быть предпочтительнее просто использовать обычные конструкции.
4. **Явная семантика**: Использование `Optional` ставит акцент на то, что значение может отсутствовать, в то время как в вашем примере с `new Class1` речь идет о том, что требуется значение. Чтение из `Optional` может ввести в заблуждение, если разработчики не ожидают, что результат может быть пустым.
В итоге, если `getSomething()` действительно может вернуть `null`, используйте `Optional` с учетом его семантики. Если вы уверены, что значение всегда будет присутствовать, базовый подход без `Optional` может быть более подходящим. Например:
```java
var something = getSomething();
var a = new Class1(something, something, something);
```
Если же вы хотите гарантировать обработку отсутствующего значения, и ваш код понятен и читабелен, наличие `Optional` может быть уместным, но следует делать это осмысленно.