JAVA 8を正しく活用する
最も賢い方法をお教えします。.
🙆🏻♀ この講義では、Java 8に追加された主要な機能を学習します。
Java 8のコードを確実に理解し、自分で作成してみましょう! 🙆🏻♂
講義紹介 👨💻
2014年3月に初めてリリースされ、6年以上が経過した今でもJava開発者が最も多く使用しているバージョンであるJava 8について学習します。
Javaの基礎学習は終えたものの、まだJavaについてよく分からない部分があったり、他の人が書いたコードを見た時に見慣れない文法が出てきたりするのであれば、おそらくJava 8で追加された機能を正しく理解できていないからかもしれません。
Java 8で何ができるでしょうか? 🐔🍴
さあ、見てください!ここにChickenというインターフェースを実装した「キソン鶏」があります。
|
public class KeesunChicken implements Chicken {
}
|
ご覧の通り、インターフェースを実装しただけで、何のメソッドもオーバーライドしていません。
しかし、このようなことが可能です。
|
public class App {
public static void main(String[] args) {
Chicken keesun = new KeesunChicken();
Egg egg = keesun.create();
}
}
|
一体、Eggを返すcreate()メソッドはどうやって使えるようになったのでしょうか?
では、次のコードを見てみましょう。ここに一羽の鶏がいます。大きくなって味付け半分・フライド半分のチキンになりたい卵の世話をしていますね。
|
Chicken.takesCare(new Egg() {
@Override
public String wannaBe() {
return "양념반 후라이드반";
}
});
|
このコードは、省略してこのように書くこともできます。
|
Chicken.takesCare(() -> "양념반 후라이드반");
|
なぜこのようにEggという型を使わずに、きれいに省略できるのか不思議に思われますか?
今回は卵を分類してみましょう。
|
List<EggWithColorAndSize> eggs = new ArrayList<>();
eggs.add(EggWithColorAndSize.of().size(3).color("yellow"));
eggs.add(EggWithColorAndSize.of().size(4).color("white"));
eggs.add(EggWithColorAndSize.of().size(3).color("white"));
eggs.add(EggWithColorAndSize.of().size(5).color("yellow"));
eggs.add(EggWithColorAndSize.of().size(3).color("brown"));
eggs.add(EggWithColorAndSize.of().size(4).color("yellow"));
|
ここにある卵の中から、色がyellowの卵だけを選んでサイズ順に並べ替えた後、卵のwannaBeを出力してみましょう。
この講義を受ければ、次のようにコードを記述し、理解することができます。
|
eggs.stream().filter(e -> e.getColor().equals("yellow"))
.sorted(Comparator.comparingInt(EggWithColorAndSize::getSize))
.map(EggWithColorAndSize::wannaBe)
.forEach(System.out::println);
|
別スレッドで卵を産む作業を実行し、卵を産んだら(コールバックで)美味しく食べるという次のようなコードも、理解して作成することができます。
|
CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {
System.out.println("コケコッコー〜 コッコッコッコ〜 " + Thread.currentThread().getName());
return EggWithColorAndSize.of().size(5).color("white");
}).thenAccept((egg) -> {
System.out.println("モグモグ: " + egg.wannaBe());
});
future.get();
|
この他にも、Java 8が提供するDateとTime API、アノテーションに生じた変化、メモリ領域の変化など、興味深い内容がたくさんありますので、ぜひ受講をお願いいたします。
ありがとうございます。