[scala]画像のタイプを文字列で返す。

BufferedImageのgetType()だと、6などの数値で返しますが、
そうではなく、"TYPE_4BYTE_ABGR"などの文字列が欲しかったので作りました。
やっていることは簡単。
Javaのリフレクションを使ってます。
BufferedImageの定数フィールドのうち、該当する値のフィールドを探しています。
最後にその名前を取得して返します。

    import java.awt.image.BufferedImage
    import java.lang.reflect.Modifier
    /** 画像のタイプを文字列で返す。ex.Some("TYPE_4BYTE_ABGR") */
    def getImageTypeName(image:BufferedImage):Option[String] = {
        // BufferedImageの定数フィールドを取得する。
        val flds = classOf[BufferedImage].getDeclaredFields.filter{ f =>
            f.getModifiers == (Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL)
        }
        flds.find{f => f.get(image) == image.getType} match {
            case Some(f) => Some(f.getName)
            case None => None
        }
   }