2015-04-16 2 views
1

Я использую следующее как задачу Async, используя RxJava в Android.Циклический вывод при использовании RxJava Async

Async.start(new Func0<String>() { 
      @Override 
      public String call() { 
       return exampleFunction(); 
      } 
     }).subscribe(); 

String exampleFunction() { 
    return "Test"; 
} 

Я пытаюсь обновить этот код с помощью Java 8.

Однако отчетность «Циклический Умозаключение» в приведенном выше коде. Не уверен, что мне не хватает.

Любые указания проблемы.

Async.start(s -> exampleFunction()).subscribe(); 

Заранее спасибо.

ответ

3

Функция вы передаете не должны иметь параметр, поэтому заменить "с" по "()":

Async.start(() -> exampleFunction()) 

Или еще лучше:

Async.start(this::exampleFunction) 
+0

WoW! это очень быстро ... Спасибо большое! Любые ссылки на быстрый учебник, где я могу глубоко погрузиться в нотации Java 8? – muneikh

+3

№. Хороший способ узнать lambda - использовать функции автозаполнения/рефакторинга в IntelliJ/Android Studio. Напишите свой код как Java 7, IDE предложит автоматически перенести его на Java 8. – clemp6r

+2

@Maverick Вот один для лямбда-выражений https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html. И при необходимости в них много других ресурсов в Интернете. –

Смежные вопросы