Класс для возврата значения из лямбды
От: vsb Казахстан  
Дата: 13.09.22 20:16
Оценка:
Нужно вернуть значение из лямбды. Т.к. Java в 2022 году недостаточно для этого продвинута, нужно использовать что-то вроде указателя.

Можно использовать массив из одного элемента:

        String[] stringRef1 = new String[1];
        ((Runnable) () -> {
            stringRef1[0] = "result";
        }).run();
        System.out.println(stringRef1[0]);


Но это кажется не очень красивым.

Можно написать специальный класс:

        class ObjectReference<T> {
            T value;
        }

        var stringRef2 = new ObjectReference<String>();
        ((Runnable) () -> {
            stringRef2.value = "result";
        }).run();
        System.out.println(stringRef2.value);


Можно использовать какой-нибудь существующий класс вроде AtomicReference, но вообще-то он тут не совсем к месту, мне обычной ссылки за глаза хватит.

Есть ли где-нибудь в JDK уместный в данном случае класс, чтобы не писать свой?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.