Java 8-2
java.util.function
자바 유틸 함수
오라클에서 제공해주는 자바 유틸 함수의 문서입니다.
스코프
private void run (){
//java 8 이전의 버전에서는 final이 붙어있어야 되었다.
int baseNum = 10;
//1. 로컬 클래스
class LocalClass {
void printBaseNum(){
int baseNum = 11;
System.out.println(baseNum);
}
}
//2. 익명 클래스
Comsumer<Integer> integerComsumer = new Comsumer<Integer>(){
@Override
public void accept(Integer integer) {
//만약 integer변수 이름을 baseNum으로 변경하게 되면
// 아래의 baseNum은 더이상 맨위의 10값을 가진 baseNum을 가르키지 않는다.
System.out.println(baseNum);
}
}
//3. 람다
IntComsumer printInt = (i) -> {
System.out.println(i + baseNum);
};
printInt.accept(10);
//4 아래와 같이 증가를 하면 effective final 변수가 아니라서
// 참조할수없다.
baseNum ++;
}
- 1 로컬 클래스에서 baseNum을 초기화할 경우 기존의
10
이 가려져 11이된다. - 2
- 3 람다는 맨처음
int baseNum = 10
과 같은 스코프를 가지고 있어 가려지지않는다. (같은 스코프 안이라 baseNum이라는 변수를 재지정 못한다.)
메소드 레퍼런스
public class Greeting{
private String name;
public Greeting(){
}
public Greeting(String name) {
this.name = name;
}
public String hello(String name) {
return "hello" + name;
}
public static String hi(String name) {
return "hi" + name;
}
}
...
public static void main(){
// Greeting greeting = new Greeting();
// UnaryOperator<String> hello = greeting::hello;
// 입력값은 없는데 리턴을 할때 -> Supplier 사용
Supplier<Greeting> newGreeting = Greeting::new;
newGreeting.get();
Function<String, Greeting> twoGreeting = Greeting::new;
}
greeting static 메소드 참조하는 방법이다.
타입::스테틱 메소드
Author And Source
이 문제에 관하여(Java 8-2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ehgks0000/Java-8-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)