比方說一個我有一個類:如何通過Scala反射訪問默認參數值?
case class Foo(id: Int, name: String, note: Option[String] = None)
無論是構造函數和方法應用在自動生成的同伴對象三個參數。當通過反射觀察時,第三個參數(注)被判:
p.isParamWithDefault = true
而且,通過檢查我可以發現,在隨對象產生的值的方法:
method <init>$default$3
和
method apply$default$3
這兩者也有:
m.isParamWithDefault = true
但是,我無法在TermSymbol上找到筆記參數的任何內容,這些參數實際上指向正確的方法以獲取默認值,也沒有指出上述MethodSymbols上指向參數TermSymbol的任何內容。
是否有直接的方法將TermSymbol鏈接到生成默認值的方法?還是我需要做一些kludgey,比如檢查伴侶對象上方法的名稱?
我感興趣的是這兩個案例類構造函數示例我有這裏和常規方法。
有kludge程度。在 示例代碼[1] [1] [這個答案]:http://stackoverflow.com/a/13813000/1296806 –
是啊,我編碼類似的東西。但它依賴於Scala的名稱修改方案,它應該被視爲實現細節。實際上現在有一個線程正在進行:https://groups.google.com/d/topic/scala-internals/aE81MVdIhCk/discussion –
是的,也遵循線程;我的興趣來源於一個需要從默認參數到方法等的公共關係,這是凌亂的,更不用說在外部了。但是如前所述,破損的形式是特定的。 –