今更聞けない?Java8の気になる機能3選

こんにちは。ぐっさんです。
 
Java8がリリースされて早いもので1年過ぎました。既に触れている方もたくさんいるかと思いますが、Java8で新しくなった機能を3つ厳選して、紹介したいと思います。

Interfaceのデフォルト実装

今までのInterfaceであれば、インスタンス化することはできず、実装は、Implimentsしたクラスが必ず実装する必要がありました。このデフォルト実装が拡張されたことにより、インスタンス化はできないですが、Interfaceに実装することができます。
 
具体的にデフォルト実装の内容を、サンプルを使って、説明していきます。

public interface Service {
  default String getServiceName() {
    return "default service.";
  }
}

public class ServiceImpl impliments Service {
}

public class Test {
  public static void main(String[] args) {
    Service service = new ServiceImpl();
    System.out.println(service.getServiceName());
  }
}

上記の通り、ServiceImplにgetServiceName()メソッドを実装しなくても、defaultのgetServiceName()が呼び出されます。

ラムダ式

Javaエンジニアには、あまり馴染みがないラムダ式ですが、ラムダ式を使うことで、複数行あるプログラムを簡潔にまとめることができます。ラムダ式を使わなくても、プログラムは書けますが、保守等でラムダ式を読まなければならないケースも出てくると思いますので、おさえておきたいところです。
 
ラムダ式の使用例を下記に記載します。
 
ラムダ式を使わないプログラム

List<Integer> list = Arrays.asList(1,  3,  2);
Collections.sort(list,  new Comparator<Integer>() {
  @Override
  public int compare(Integer o1,  Integer o2) {
    return Integer.compare(o1,  o2);
  }
});

 
ラムダ式を使ったプログラム
List<Integer> list = Arrays.asList(1,  3,  2); 
Collections.sort(list,  (o1,  o2) -> Integer.compare(o1,  o2));

すっきりしましたね。

日付API

Java8から、新たにjava.timeパッケージが導入されました。サンプルのような日付取得ができるようになります。

// 現在日時を取得
LocalDateTime localDateTime = LocalDateTime.now();
// 現在日を生成
LocalDate localDate = LocalDate.now();
// 現在時刻を生成
LocalTime localTime = LocalTime.now();
// 年月日時分まで指定して生成
LocalDateTime localDateTime = LocalDateTime.of(2015,  04,  21,  18,  5);

CalendarクラスやDateクラスに比べて、簡潔に記載できるようになっています。また、高機能なインターフェースも用意されていますので、ぜひ試してみてください。

まとめ

Java8のアップデートは、大きな範囲でリリースされています。
 
このほかの機能についても、いろいろ試してみてはいかがでしょうか。

記事をシェア
MOST VIEWED ARTICLES