簡體   English   中英

如果我們在構造函數中定義了默認值,如何使用 Scala 反射調用默認構造函數

[英]How to invoke default constructor using scala reflection if we have default value defined in our constructor

class Person(name: String = "noname", age:Int = -1){}

object ReflectionTester{
 def main(args: Array[String]) {
  val m = ru.runtimeMirror(getClass.getClassLoader)
  val classTest = m.staticClass("Person")
  val theType = classTest.toType

  //class mirror
  val cm = m.reflectClass(classTest)
  val ctor = theType.decl(ru.termNames.CONSTRUCTOR).asMethod
 }
}

調用類鏡像為我提供了傳遞名稱和年齡的默認構造函數,但是推斷構造函數太正確了,我可以在其中創建具有默認值的人並允許我根據需要設置它們。

你如何在方法鏡像中調用它。 在這種情況下,我期待 4 個構造函數,1 個具有兩個值,2 個用於單個字段,1 個沒有字段。

我選擇這個作為 VO 的例子,所以請不要對設計發表評論。 問題是如何推斷具有默認值的構造函數

只有一個構造函數。 默認值保留在 Person 伴隨對象中。 調用new Person(age = 10)變成了類似new Person(Person.<init>$default$1(), 10)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM