30분 입문 Java8의 lambda 표현식 학습
Google은 올해 Android N 개발자 미리보기를 발표하고 자바 8을 지원하기 시작했다고 발표했다.우리는 마침내 안드로이드 개발에서 자바8의 일부 언어 특성을 사용할 수 있게 되었다.현재 지원:
개발 환경 설정
먼저 JDK1.8을 다운로드하여 설치해야 합니다.
Android 개발에서 lambda 표현식을 사용하려면 Android Studio에서 Java8 개발 환경을 설정해야 합니다.
앱의 Gradle 파일을 구성하려면:
android {
defaultConfig {
...
// jack
jackOptions {
enabled true
}
}
...
// Java1.8
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
여러 가지 이유로 우리가 사용하는 JDK 버전은 1.7 심지어 더 낮을 수도 있지만, 우리는 람다 표현식을 사용하는 것을 배우고 싶은데, 어떻게 해야 합니까?Github에 이미 개발자가 lambda 표현식부터 자바 7, 6, 5까지 호환되는 소스 라이브러리retrolamda를 설계했다.Android Studio에서 구성하는 방법에 대해서는 더 이상 언급할 필요가 없습니다.참조할 수 있습니다Gradle Retrolambda Plugin.첫 번째 lambda 표현식
아래의 코드를 보면 모두가 매우 익숙할 것이라고 믿는다.버튼에 감청 이벤트를 설정하는 거잖아.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG"," , ");
}
});
위의 코드를 분석하면 익명 내부 클래스를 통해 Button의 클릭 감청 이벤트를 설정합니다.즉, 우리는 View.OnClickListener
인터페이스를 실현한 익명 클래스의 대상을 만들었다.익명 내부 클래스는 onClick
방법을 실현했다.이 익명 클래스의 대상을 통해 사용자가 단추를 눌렀을 때 로그를 출력합니다.그런데 다들 눈치채셨나요?위의 코드가 정말 유용한 것은 바로 Log이다.d("TAG", "버튼 클릭, 익명 내부 클래스");이 줄의 코드는 익명 내부 클래스를 사용하는 단점을 반영한다.
button.setOnClickListener(view-> Log.d(TAG," ,lambda "));
view-> Log.d(TAG," ,lambda "));
가 바로 우리가 쓴 첫 번째 람다 표현식이다.lambda 표현식은 보통
(argument)->(body)
같은 형식으로 쓰인다.
//
(arg1,arg2...) -> {body}
//
(Type1 arg1,Type2 arg2...)->{body}
lambda 표현식에서 매개 변수의 형식은 생략할 수 있습니다.Java 컴파일러는 표현식의 컨텍스트에 따라 매개변수의 유형을 유도합니다.위 그림에서view의 유형이View인 것처럼.lambda 표현식의 구조
//
()-> System.out.println("no argument");
//
x->x+1
//
(x,y)->x+y
//
View.OnClickListener oneArgument = view->Log.d(TAG,"one argument");
//
View.OnClickListener oneArgument = (View view)->Log.d(TAG,"one argument");
//
// void
View.OnClickListener multiLine = (View view)->{
Log.d(TAG,"multi statements");
Log.d(TAG,"second line");
}
// int
(int x)->x+1
lambda 표현식의 유형우리는 모두 자바가 강한 유형의 언어라는 것을 안다.모든 방법의 매개 변수는 유형이 있습니다. 그렇다면lambda 표현식은 어떤 유형입니까?
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//...
}
};
button.setOnClickListener(listener);
위에서 보듯이 이전에 우리는 단일한 방법의 인터페이스를 사용하여 하나의 방법을 대표하고 그것을 다시 사용했다.lambda 표현식에서 이전과 같은 형식을 사용합니다.우리는 함수식 인터페이스(functional interface)라고 부른다
이전 button의 클릭 응답 이벤트에 사용된 View와 같습니다.OnClickListener는 함수식 인터페이스입니다.
public class View implements Drawable.Callback, KeyEvent.Callback,
AccessibilityEventSource {
...
public interface OnClickListener {
void onClick(View v);
}
...
}
그러면 도대체 어떤 인터페이스가 함수식 인터페이스입니까?함수식 인터페이스는 추상적인 방법만 있는 인터페이스다.lambda 표현식을 나타내는 형식으로 사용됩니다.
Java8 API에 여러 함수 인터페이스가 추가되었습니다.
인터페이스 이름
매개 변수
반환값
용도
Predicate
T
boolean
단언
Consumer
T
void
소비하다
Function
T
R
함수
Supplier
None
T
공장 방법
UnaryOperator
T
T
논리적 비
BinaryOperator
(T,T)
T
이원 조작
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Liquibase】DB 작성·테이블 정의 변경신규 스타터 프로젝트 작성 Liquibase와 MySQL 선택 application.properties에 DB 정보 넣기 MySQL에서 "testdatabase"라는 데이터베이스 만들기 빌드 종속성 추가 build....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.