[英]How to get default constructor parameter using reflection?
這種看似很容易找出來,但現在卻感到困惑:
scala> class B(i:Int)
defined class B
scala> classOf[B].getDeclaredFields
res12: Array[java.lang.reflect.Field] = Array()
請注意:
scala> class C(i:Int){
| val j = 3
| val k = -1
| }
defined class C
scala> classOf[C].getDeclaredFields
res15: Array[java.lang.reflect.Field] = Array(private final int C.j, private final int C.k)
如果將i
聲明為val
或var
,或者將B
為case類,則將看到:
scala> classOf[B].getDeclaredFields
res1: Array[java.lang.reflect.Field] = Array(private final int B.i)
如果您不執行任何操作,則不會生成名為i
方法或字段,因為它只是從未使用過的構造函數參數; 沒有理由會導致方法或字段存在。
請注意,Scala編譯器從不生成公共成員,而僅生成私有成員。 從外部進行訪問意味着要通過名為i
的方法 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.