http://i07iwami.b.sourceforge.jp/wp-admin/edit.php



--------------------------------------------------
0.env
http://jdk8.java.net/download.html

ラムダ式を利用したい場合
http://jdk8.java.net/lambda/


1.ラムダ式
http://www.infoq.com/jp/articles/java-8-vs-scalaより
　■関数として
　例1
		Arrays.sort(numbers, (x, y) -> y - x);
　例2
		Collections.sort(list, (o1, o2) -> o2 - o1);

　[関数の定義]
　Javaのラムダ式は、SAM Typeの実装の簡易記法(でも、匿名クラスは作られない)
　SAM : single-abstract-method types
		greeting = () -> System.out.println("Good Morning!");
		greeting.greet();
		greeting = new HelloWorld() { public void greet() { System.out.println("Good Morning!"); } };
		greeting.greet();
　※interfaceでないとできないっぽい。abstrac classではダメだった


　■型引数がある場合
	interface Func<T, R> {
	    R apply(T p);
	}
	※java.util.function.Functionインタフェースが全く同じ実装

	public <T> T twice(Func<T, T> func, T value) {
		return func.apply(func.apply(value));
	}
　→


　■default
　・interfaceにデフォルト実装を追加
　・継承できる
　・オーバーライドできる
　・子インタフェースでデフォルト実装を消せる
　
　
　