public class Ex72_Lambda {
public static void main(String[] args) {
//익명클래스에서 구현한 메소드
NoParameterNoReturn pr1 = new NoParameterNoReturn() {
@Override
public void call() {
System.out.println("pr1");
}
};
pr1.call();
//람다식에서 구현한 메소드
NoParameterNoReturn pr2 = () -> {
System.out.println("pr2");
};
pr2.call();
//***블럭 생략 가능(실행문 한줄일 경우)
NoParameterNoReturn pr3 = () -> System.out.println("pr3");
pr3.call();
ParameterNoReturn pr4 = (int num) -> System.out.println(num);
pr4.call(1);
pr4.call(10);
//***매개변수의 자료형 생략 가능 > 클래스를 보고 추측이 가능하기 때문에
ParameterNoReturn pr5 = (num) -> System.out.println(num);
pr5.call(20);
//***매개변수의 소괄호 생략 가능
ParameterNoReturn pr6 = num -> System.out.println(num); //가장 간소화한 람다식 형태
//***매개변수의 소괄호는 매개변수가 1개일때만 생략할 수 있다.
MultiParameterNoReturn pr7 = (name, age) -> System.out.printf("이름: %s, 나이: %d\n", name, age);
pr7.call("홍길동", 25);
NoParameterReturn pr9 = () -> {
return 100;
};
System.out.println(pr9.call());
//중괄호 생략 시 return 까지 생략하여 가능하다.
NoParameterReturn pr10 = () -> 100;
System.out.println(pr10.call());
ParameterReturn pr11 = name -> name.length();
System.out.println(pr11.call("홍길동"));
}
}
interface NoParameterNoReturn {
void call();
}
interface ParameterNoReturn {
void call(int num);
}
interface MultiParameterNoReturn {
void call(String name, int age);
}
interface NoParameterReturn {
int call();
}
interface ParameterReturn {
int call(String name);
}
pr1
pr2
pr3
1
10
20
이름: 홍길동, 나이: 25
100
100
3
public class Ex72_Lambda {
public static void main(String[] args) {
//기본 버전
nums.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
//간소화1 (오름차순)
nums.sort((Integer o1, Integer o2)-> {
return o1-o2;
});
//간소화2 (내림차순) : 자료형&return 생략
nums.sort((o1, o2) -> o2-o1);
System.out.println(nums);
}
}
많은 도움이 되었습니다, 감사합니다.