2017-10-31 2 views
2

Java 8, Android Android 3.0을 새로 설치합니다.AndroidStudio 3.0 : Java 8 스트림이 컴파일되지 않음 (API 수준 24로 호출해야 함)

추가 코드 :

List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1"); 

     myList 
       .stream() 
       .filter(s -> s.startsWith("c")) 
       .map(String::toUpperCase) 
       .sorted() 
       .forEach(System.out::println); 

하지만 오류가 컴파일 얻을 : 안드로이드 스튜디오 3.0 자바 1.8 지원의 무리가 있지만

Call requires API level 24 (current min is 15) java.util.stream.Collection 
+3

. API 15의 최소 SDK 레벨은 Ice Cream Sandwich, 4.0.3에 해당합니다. 장치에서 6 년된 런타임은 처음 생성되었을 때 존재하지 않았던 새로운 Java 8 * API *를 마술처럼 지원할 수 없습니다. AS 3.0 (minSDK <24)의 경우 Java 8 * 언어 * 기능 (예 : 인터페이스 기본 메소드)을 지원하지만 새로운 Java 8 * API * (이전 장치의 경우)는 지원하지 않습니다. – Sartorius

답변

4

(람다, 방법 참조, 기본 인터페이스 방법) , 모든 Android API에서 1.8이 모두 지원되는 것은 아닙니다. https://developer.android.com/studio/write/java8-support.html#supported_features

같은 java.util.stream 같은 자바 1.8 라이브러리를 백 포트 얻을 수있는 좋은 라이브러리는 StreamSupport입니다 : 특히, java.util.stream는 API (24)

는 개발자 문서를 참조하십시오 때까지 지원되지 않는 행동을 예상됩니다 https://github.com/streamsupport/streamsupport

+0

"try resources"도 지원하지 않습니다. 메시지 표시 : "자원을 사용해보십시오. API 수준 19 (현재 최소값은 15)"가 필요합니다. – Alexei