4月最終週から5月末まで、当社では新人
Javaプログラミング研修を実施しています。
ご存知の方も多いと思いますが、
Java 8では、
インターフェイスにメソッドのデフォルト実装が持てるようになったり、staticメソッドが定義できたりするようになりました。
ちょっと脱線しますが、このままいくと
Java 9や10では普通のフィールドとかも定義できるようになるんじゃないかと…。要は
Scalaのトレイトみたいになるのではと、けっこう本気で思っています。
僕が研修で
インターフェイスを教えるときは、「抽象クラスとは違って、抽象メソッドしか定義できません!」と説明します。
Java 8では、この説明がウソになってしまいます。
そこに更に、メソッドの実装が持てますとかいうややこしい説明をしてしまうと、余計に混乱させてしまう可能性があります。
今のところ考えているのは、開発環境として
Java 8は使うけど、最初の内容としては
Java 7の範囲のみを教える。
そして、一通りの内容が終わった後に、オプションとして
Java 8との差分(
インターフェイスの諸々、
ラムダ式、Date and Timeなど)を教える、という方法です。
こうした方が、受講者の方の混乱を生まないかな、と思っています。