上記をもう少し関数型っぽくしてみました。
import java.awt.image.BufferedImage import java.lang.reflect.Modifier._ /** 画像のタイプを文字列で返す。ex.Some("TYPE_4BYTE_ABGR") */ def getImageTypeName(image:BufferedImage):Option[String] = { // BufferedImageの宣言フィールドを取得する。 classOf[BufferedImage].getDeclaredFields.filter{ // 定数フィールドのみを通す _.getModifiers == (PUBLIC | STATIC | FINAL) }.find{ // その値か? _.get(image) == image.getType }.map{ // あれば、それを名前で返す _.getName } }
あまりやりすぎると、デバッグしにくくなり、未来の自分も理解に苦しんだりするんです。
ある程度「息つぎ」がある方が私好みです。