• 作成:

Java側からScalaのforeachメソッドをcallする

問題

ScalaのCollectionのforeachメソッドの返り値型はUnitである.

Javaでラムダ式を渡すと返り値型がvoidになり自動変換されないのでコンパイルエラーとなる.

解決策

mapを使う

mapを使ってreturn null;とでもしておく. すごくダサい. 多分JVMは最適化してくれるでしょうがnullが詰まったコレクションが新規作成されてしまうのも気になるところ.

scala.runtime.BoxedUnit.UNITを使う

return scala.runtime.BoxedUnit.UNIT; と書く.

意図が明確になるのでこちらの方が良いでしょう.