2015-05-18 48 views
30

hạnh phúc khi biết rằng java giới thiệu Lambda expressions trong phiên bản java 8.phòng thu android: lambda biểu thức không được hỗ trợ trong -source 1.7 (sử dụng -source 8 hoặc cao hơn để cho phép các biểu thức lambda)

Tôi đã làm việc trong studio android. Và tôi nhận thấy rằng DialogInterface.OnClickListener() được hiển thị nhấn mạnh và trở thành màu xám như sau:

enter image description here

Vì vậy, tôi đã làm alter + enter trên dòng đó và tìm thấy tùy chọn để thay thế mã bằng Lambda Expressions, như sau:

enter image description here

nào dẫn đến một cái gì đó dưới đây:

enter image description here

Sau khi chạy đoạn code nó chỉ cho tôi lỗi này:

Error:(160, 69) error: lambda expressions are not supported in -source 1.7 (use -source 8 or higher to enable lambda expressions)

Nhưng tôi đã sử dụng java jdk1.8.0_31. Có gì khác, tôi cần phải cài đặt?

bất cứ ai có thể giúp tôi ra xin vui lòng ..

+2

Bạn đã đọc: http://stackoverflow.com/questions/23318109/is-it-possible-to-use-java-8-for-android-development –

+0

Java 8 không được hỗ trợ nhưng bạn có thể sử dụng retrolanbda cho cùng một hiệu ứng https://github.com/evant/gradle-retrolambda – Eoin

Trả lời

6

Tôi không nghĩ Android phát triển đã sẵn sàng nào cho Java 8. Android Studio hỗ trợ mức biên dịch Java 7 cho dù bạn đã cài đặt Java 7 hoặc Java 8. Vì vậy, nếu bạn muốn sử dụng các tính năng mới của Java 8, tôi nghĩ bạn phải đợi Android Studio để hỗ trợ compile level Java 8.

+0

có thể là ... bạn đang ở đây !. – CoDe

+0

Chạy ngay lập tức không được hỗ trợ là nhược điểm chính và điều khiến tôi quay trở lại Java 7 một cách trung thực, PLUS tất cả các tính năng ngôn ngữ thực sự thú vị trong Java 8 (Streams chẳng hạn) chỉ được hỗ trợ với API 24 trở lên .. – Odaym

11

Bạn không thể biên dịch các nguồn Java 8 cho Android, bởi vì Android SDK không hỗ trợ Java 8.

Nhưng có một cách để sử dụng Lambdas trong mã của bạn - RetroLambda. Đây là một chút hack cho phép bạn sử dụng một số tính năng của Java 8 trong dự án của bạn.

+0

Bạn đã sử dụng nó..did bạn có bất kỳ tác dụng phụ nào về lib này không! – CoDe

+0

@Shubh tôi đã cố gắng sử dụng nó trong sản xuất vài tháng trước, nhưng tiếc là tôi phải đối mặt với rất nhiều vấn đề với nó. Bamboo CI không hỗ trợ Java 8 có nghĩa là bạn không thể biên dịch dự án của bạn ở đó. Ngoài ra đối với một số phiên bản của dự án plugin gradle không biên dịch, và các bài kiểm tra espresso không làm việc với retrolambdas. Có lẽ vấn đề này đã được giải quyết nhưng tôi đã không kiểm tra – Stepango

+0

Vì vậy, điều này là không nên sử dụng nó cho bây giờ ít nhất, phải! – CoDe