Согласен, первое впечатление такое, но все же не совсем так, я бы сказал что более точно ему подходит «продуманная scala».
Те же nullable типы, на практике удобнее чем Option, и к тому же сохраняется полная совместимость с Java.
Или smart cast. От java ведь все равно никуда не деться, и когда что-нибудь вызываешь из нее, на выходе приходится проверять на null (ну или оборачивать в Option в scala). А kotlin позволяет всего лишь проверить на null, и дальше в коде уже сохраняется информация о том что эта переменная не может быть null. Не нужно никаких Option, и код становится понятнее.
Вообще советую поиграться с kotlin, он в живую выглядит еще лучше
Похоже был не прав был со spring boot. Из коробки все нормально работает и с data class, и с обычными классами, да и с nullable типами. Сейчас проверил на практике.
Но в любом случае неплохо иметь возможность кастомной настройки маппера:
val jacksonMapper = ObjectMapper().registerKotlinModule()
.setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
.enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
Согласен, первое впечатление такое, но все же не совсем так, я бы сказал что более точно ему подходит «продуманная scala».
Те же nullable типы, на практике удобнее чем Option, и к тому же сохраняется полная совместимость с Java.
Или smart cast. От java ведь все равно никуда не деться, и когда что-нибудь вызываешь из нее, на выходе приходится проверять на null (ну или оборачивать в Option в scala). А kotlin позволяет всего лишь проверить на null, и дальше в коде уже сохраняется информация о том что эта переменная не может быть null. Не нужно никаких Option, и код становится понятнее.
Вообще советую поиграться с kotlin, он в живую выглядит еще лучше
Но в любом случае неплохо иметь возможность кастомной настройки маппера:
Поэтому вариант с ResourceHolder пока единственный нормальный. А так вся надежда на то, что JetBrains в ближайшее время исправят ситуацию.
Они не хуже, просто из коробки spring boot c data и nullable типами хуже работает, поэтому приходится делать подмену маппера