Java EE 事始め!

主にJava EEについて、つらつらとマイペースに書いていきます。「Java EEを勉強するときに、一番最初に読んでもらえるブログ」を目指して頑張ります!

Java 8時代にインターフェイスをどう教えるか

4月最終週から5月末まで、当社では新人Javaプログラミング研修を実施しています。
今年はJava 7+Eclipseという開発環境ですが、来年のこの時期にはJava 7のサポートが切れているはずですので、来年はJava 8で研修を行う予定です。
新人対象に限らず、Java 8時代の研修で困るのが、インターフェイスをどう教えるかです。

ご存知の方も多いと思いますが、Java 8では、インターフェイスにメソッドのデフォルト実装が持てるようになったり、staticメソッドが定義できたりするようになりました。
ちょっと脱線しますが、このままいくとJava 9や10では普通のフィールドとかも定義できるようになるんじゃないかと…。要はScalaのトレイトみたいになるのではと、けっこう本気で思っています。

僕が研修でインターフェイスを教えるときは、「抽象クラスとは違って、抽象メソッドしか定義できません!」と説明します。
Java 8では、この説明がウソになってしまいます。

しかもインターフェイスは、Java初学者の方にとって、フワフワしてて捉えどころの無い、理解しづらいものです。
そこに更に、メソッドの実装が持てますとかいうややこしい説明をしてしまうと、余計に混乱させてしまう可能性があります。

今のところ考えているのは、開発環境としてJava 8は使うけど、最初の内容としてはJava 7の範囲のみを教える。
そして、一通りの内容が終わった後に、オプションとしてJava 8との差分(インターフェイスの諸々、ラムダ式、Date and Timeなど)を教える、という方法です。

こうした方が、受講者の方の混乱を生まないかな、と思っています。