文字列名でオブジェクトフィールドを取得しようとすると、正しいスカラ型ではなく値が返されます。よう:文字列名と元の型でフィールド値を取得するためのリフレクションを作成する方法
import scala.language.reflectiveCalls
import scala.language.implicitConversions
case class Intity(flag: Boolean, id: Int, name: String)
val inty = Intity(false, 123, "blue")
implicit def reflect(r: AnyRef) = new {
def get(n:String) = {
val c = r.getClass.getDeclaredField(n)
c.setAccessible(true); c}
def getVal(n: String) = get(n).get(r)
def getType (n:String) = get(n).getType
}
この
を使用してinty.getType("flag") // res0: Class[_] = boolean --not Boolean
inty.getVal("id") // res1: Object = 123 --Object not Int
上記の実装を行うための任意の効率的な方法?
代わりの反射、[不定形](https://github.com/milessabin/shapeless)があなたの問題を解決することができるだろうか? – Reactormonk
@Reactormonkしかし、どのように、私はこれまで不運についてはあまり知らない。文字列名によるクラス属性へのアクセスをサポートし、元の型で値を返しますか? – ALMEK
実行時リフレクションを使用してコンパイル時に正確な型を取得することはありません。それについて考える。 –