私はscalaでリフレクションで遊んでいます。私が選んだ
class CloneSubject(val a :Int, b :String, private var c :Boolean)
typeOf[CloneSubject].members
サブジェクトとしてフィールドを検索するために繰り返し処理しますが ( sym.isTerm && (sym.asTerm.isVar || sym.asTerm.isVal)
)、FieldMirror を作成しようとすると ( )、次のcm mirrorField sym.asTerm
例外が発生します。
Exception in thread "main" scala.ScalaReflectionException: Scala field b isn't represented as a Java field,
neither it has a Java accessor method
note that private parameters of class constructors don't get mapped onto fields and/or accessors,
unless they are used outside of their declaring constructors.`
これで、なぜこれが起こるのか完全に理解できましたが、例外をスローせずにこれを確認する方法が見つかりません。もちろん、Java リフレクションを使用しても問題なく動作しますが、それは的外れです。何か案は?