工作,我如何轉換這種說法從經典的Java到Android流()方法不會在Android的
Collection<Integer> p1;
int sum = p1.stream().mapToInt(Integer::intValue).sum();
我整合的Java 8和lambda我的Android應用程序,但它仍然無法正常工作。在android中找不到stream()方法。
你能幫我嗎?
工作,我如何轉換這種說法從經典的Java到Android流()方法不會在Android的
Collection<Integer> p1;
int sum = p1.stream().mapToInt(Integer::intValue).sum();
我整合的Java 8和lambda我的Android應用程序,但它仍然無法正常工作。在android中找不到stream()方法。
你能幫我嗎?
您可以使用streamsupport庫將後端流API API移植到可用於Android開發的Java 6/7,並支持所有設備。這個庫完全支持Java 8中的原始實現,並使其在單獨的包(前綴java8。)中可用。 Collection接口上添加的默認方法(例如#stream(),#forEach())可以從單獨的工具類中獲得,例如, Iterables或StreamSupport。
它是否有Gradle的Maven回購,還是我們必須使用物理jar文件? –
@Igor Ganapolsky罐子在Maven中心。從Gradle使用它們沒問題。 – Sartorius
流API是在最近的Android 7.0 SDK平臺的修訂包括:(API 24):
public interface Collection<E> extends Iterable<E> {
// .. redacted
default Stream<E> stream() { .. }
}
請注意,爲了使用它,你必須設置minSdkVersion
至24
你知不知道,用minSdk <24是可能以某種方式運行這樣的api?以傑克編譯器或者某事物爲例。應該有一些方法來支持它,我很自豪) – Beloo
@Beloo我沒有嘗試過自己,但它似乎像steamsupport庫[T.Neidhart提到](http://stackoverflow.com/a/37880098/1233652 )完全符合你的需求。你試過了嗎? –
@Beloo是的,streamsupport應該爲你工作。我還沒有嘗試過與傑克,但我沒有看到任何理由爲什麼它不應該工作。 Android世界中的很多人都使用retrolambda插件,但傑克應該沒問題。 –
沒有,我不問使用java 8的可能性,因爲我已經在使用它了:我在android –
中詢問了一個等效的stream()方法所以你想要一個'for'循環? – Tunaki
我想轉換所有的語句,因爲一個stream()方法不可用,mapToInt()和sum()也不可用。 –