2016-09-15 47 views
40

Tôi đã đọc số này post tại đây. Nhưng tôi vẫn không thể chạy mã chứa Java tính năng 8 Suối API như sau trên minSdkVersion < 24.Có thể sử dụng API Java 8 Stream trên API Android <24 không?

List<Car> newCars = cars.stream() 
         .filter(s -> s.getColor().equals("red")) 
         .collect(Collectors.toList()); 

này không chạy do được thông báo lỗi

Gọi đòi hỏi mức API 24 (hiện tại tối thiểu là 15): java.util.Collection # stream

Vậy ai đó biết giải pháp?

+3

không, bạn không thể sử dụng java stream dưới api 24. có thư viện của bên thứ ba thực hiện cùng một điều mặc dù công việc đó – tyczj

+1

Tôi có một thư viện nhỏ làm những việc tương tự cho apis thấp hơn: https://github.com/smaspe/FunctionalIterables – njzk2

+2

Xem http: // stackoverflow.com/questions/39265004/is-android-n-stream-api-backported-to-lower-versions và http://stackoverflow.com/questions/39039566/is-it-possible-to-use-java- 8-feature-optional-and-stream-cho-android-14-and-hig cho các câu hỏi tương tự (và câu trả lời). – Sartorius

Trả lời

26

Bạn không thể sử dụng Java8 suối trên mức API < 24.

Tuy nhiên, có một số thư viện mà backport một số các chức năng dòng

https://github.com/aNNiMON/Lightweight-Stream-API

https://github.com/konmik/solid

https://sourceforge.net/projects/streamsupport/ (nêu bởi @sartorius trong nhận xét)

+7

Mặc dù [solid] (https://github.com/konmik/solid) và [Lightweight-Stream-API] (https://github.com/aNNiMON/Lightweight-Stream-API) chắc chắn là các tùy chọn có giá trị cho Stream- như lập trình, IMHO không ai trong số họ thậm chí có thể được coi là một "backport" của API Java 8 Stream. Dự án duy nhất mà tôi biết về điều đó có thể yêu cầu được đóng theo cú pháp và ngang bằng trong chức năng với các luồng Java 8 là [streamsupport] (https://sourceforge.net/projects/streamsupport/). Ví dụ, nó cũng hỗ trợ các luồng song song. Mặc dù điều đó có thể không quan trọng đối với các nhà phát triển Android. – Sartorius

+0

IMO, Trọng lượng nhẹ-Stream-API là đẹp nhất trên Android vì hỗ trợ Gradle và thêm tính năng bổ sung như "chọn", "groupBy", v.v. https://github.com/aNNiMON/Lightweight-Stream-API#additional- toán tử. – LordParsley

+2

@LordParsley hỗ trợ luồng cũng có hỗ trợ Gradle. Đối với các tính năng bổ sung, yup đó là sự thật. Theo tôi hiểu, việc mở rộng/chuyển hướng từ API Java 8 chính thức chưa bao giờ là mục tiêu thiết kế của luồng hỗ trợ. – Sartorius

Các vấn đề liên quan