자바 유틸 함수
오라클에서 제공해주는 자바 유틸 함수의 문서입니다.
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 ++;
}
10
이 가려져 11이된다.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 메소드 참조하는 방법이다.
타입::스테틱 메소드