Java 8-2

9068 ワード

java.util.function


JAvaユーティリティ関数
Oracleで提供されるJavaユーティリティ関数のドキュメント.

スキャン


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;
        
    }
    
    これは挨拶静的メソッドを参照する方法です.타입::스테틱 메소드