2016-01-07 83 views
-2

我無法理解如何使這個代碼應該在Java7這個 - >符號在Java中的含義是什麼?

RetryPolicy retryPolicy = new RetryPolicy() 
    .retryWhen((ClientResponse response) -> response.getStatus() != 200) 
    .withDelay(1, TimeUnit.SECONDS) 
    .withMaxRetries(3); 

Recurrent.get(() -> webResource.post(ClientResponse.class, input), retryPolicy); 

工作正是這種->符號在java中是什麼意思?

如果Java7不支持它如何改變它,所以它應該工作。

+2

切換到使用Java 8,因爲不再支持v7。 –

+2

這稱爲箭頭' - >',用於lambda表達式中,如參數,' - >'箭頭和表達式 – iMBMT

+1

@tom thx。錯字錯誤,更正。 – iMBMT

回答

4

->用於表示Lambda Expressions,這其中的Java 8引入,從而,它不會對編譯的Java 7.

here摘自:

Lambda表達式,一個新的語言特性,已在 此版本中引入。它們使您能夠將功能視爲方法 參數,或將代碼視爲數據。通過Lambda表達式,您可以更加簡潔地表達單方法接口(稱爲功能 接口)的 實例。

編譯(在Java 8的早期版本),你需要重寫代碼。否則,您將需要針對Java 8進行編譯。

+0

我正在使用一個API https://github.com/jhalterman/recurrent/#retry-policies它們在哪裏使用這樣的代碼,這意味着它將支持Java7? –

+0

@SubodhJoshi不,它僅支持java 8. – iMBMT

+1

@SubodhJoshi:該代碼不是Java 7的一部分。在Java 8中引入並需要Java 8或以上版本才能編譯的Lambda表達式。 – npinti

相關問題