Как избежать закрытия в Swift и как это сделать в Java

Я разрабатываю приложение как для iOS, так и для Java, и в моей быстрой программе у меня есть функция, которая использует экранирующее закрытие, которое передает массив строк. В быстром определении это func выглядит как

func foo(uid: String, onComplete: @escaping([String]) -> Void { 
    onComplete(someStringArray)
}

и его функциональный вызов

class.foo(uid: player1, onComplete { (stringArray) in {
    do something with stringArray
}

Моя основная задача сейчас — выяснить это для Java. БОЛЬШАЯ проблема заключается в том, что я использую базу данных Google Firebase, которая загружает данные асинхронно, поэтому простое создание функции возврата не будет работать, поскольку возврат будет вызываться до загрузки всех данных. Я слышал о возможных ответных звонках, но решил сначала спросить здесь, прежде чем тратить драгоценные часы на неправильную задачу. Я думаю, что версия Java будет

void foo(String uid, onComplete...) { 
onComplete(someStringArray)
}

В любом случае, я надеюсь, что я был максимально подробным и ценю любую помощь! -Бен

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
315
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать выражения Лямбда-выражения.

Простите мое название функции, но вот пример:

public class LambdaExample{

    interface Description {
        void describeThis(String str);
    }

    public static void getDescription(Description description, String str){
        description.describeThis(str);
    }

    public static void main(String []args){
        getDescription(new Description() {
            @Override
            public void describeThis(String str) {
                System.out.println(str + " is handsome");  // Meow2x is handsome
            }
        }, "Meow2x");
    }
}

Вы, сэр, находка

Benjamin VanCleave 07.02.2019 20:36

Другие вопросы по теме