Здравствуйте, Worminator X, Вы писали:
vsb>>В Java и сейчас так (та ещё дурость).
WX>У меня на рабочем проекте (OpenJDK 21) компилируется без ошибок:
WX> private void filterBy_SubjectTypeCode_Inn(@NonNull TARLSubjectInfoGetListInParam subjectSet,
WX> @NonNull List<GoldSubjectRecord> goldSubjectRecords) {
WX> if (subjectSet.getCommon() != null) {
WX> Integer idSubjectType = idTypeCacheService.getIdType(subjectSet.getCommon().getSSubjectTypeCode());
WX> String sInn = subjectSet.getCommon().getSInn();
WX> if (idSubjectType != null && sInn != null) {
WX> mdmDataManageService
WX> .getTarantoolObjectByField("sINN", sInn, GoldSubjectRecord.class)
WX> .stream()
WX> .filter(record -> record.getIdSubjectType().equals(idSubjectType))
WX> .forEach(goldSubjectRecords::add);
WX> }
WX> }
WX> }
WX>Раньше обязательно требовало final для таких переменных.
Сейчас тоже требует. Просто это называется effectively final. Типа писать не обязательно, но оно подразумевается, менять ты её не можешь. Это ещё одна дурость.
vsb>>Поле неизменяемое, а содержимое изменяемое.
WX>В Java полно подобных косяков, к сожалению. Язык из костылей, прямо аналог Linux в мире ЯП. Но там как раз GC, разруливающий циклические зависимости.
Так в 99% языков нет понятия константности. И в 1% эта константность порой на уровне "я обещаю" и легко её убрать.