簡體   English   中英

如何使用反射獲取默認構造函數參數?

[英]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聲明為valvar ,或者將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.

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