Я разрабатываю приложение как для 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)
}
В любом случае, я надеюсь, что я был максимально подробным и ценю любую помощь! -Бен




Вы можете использовать выражения Лямбда-выражения.
Простите мое название функции, но вот пример:
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");
}
}
Вы, сэр, находка