我正在反思地調用一個方法,它的參數可能是也可能不是value class的一個實例。由於值類的目的是爲了避免對基礎值進行裝箱,如果參數類型是值類,那麼所討論的方法實際上會期望取消裝箱值。爲了處理這種情況,我試圖從值類中展開底層的值。我首先需要確定參數是一個值類的,在這裏我碰到的第一個攔路虎:Scala:識別價值類別的對象
def isObjectOfValueClass(arg: Any) =
classOf[AnyVal].isAssignableFrom(arg.getClass)
預期這不起作用,因爲方法返回true
:
case class NonValueClass(underlying: Int)
isObjectOfValueClass
如何實施?或者是否有一種更簡單的方式來反思地調用一個可能將值類的對象作爲參數的方法?
順便說一下,value類不僅可以包裝基元,還可以包裝對象。 –