Scala で Java ライブラリ (JOhm) を使用しようとしていますが、ライブラリが Scala クラスのフィールドを次のようなもので読み取ろうとすると失敗することに気付きましたmodel.getClass().getDeclaredFields()
。
次に、Scala インタープリターで簡単な例を使用して同じことを試みることにしました。
scala> import java.lang.reflect.Field;
import java.lang.reflect.Field
scala> class myClass(attribute1: String, attribute2: String, attribute3: String)
defined class myClass
scala> val myInstance = new myClass("value1", "value2", "value3")
myInstance: myClass = myClass@7055c39a
scala> myInstance.getClass().getDeclaredFields()
res0: Array[java.lang.reflect.Field] = Array()
実際、フィールドはまったく得られません。
さて、これを試してみたらどうですか:
scala> class myClass2(attribute1: String, attribute2: String, attribute3: String) { override def toString = this.attribute1 }
defined class myClass2
scala> val myInstance2 = new myClass2("value1", "value2", "value3")
myInstance2: myClass2 = value1
scala> myInstance2.getClass().getDeclaredFields()
res1: Array[java.lang.reflect.Field] = Array(private final java.lang.String myClass2.attribute1)
そのため、クラスのメソッドの 1 つでフィールドの 1 つを使用すると、getDeclaredFields() によって検出されます。ここで何が欠けていますか?