Sto invocando in modo riflessivo un metodo il cui argomento potrebbe o potrebbe non essere un'istanza di value class. Poiché lo scopo delle classi di valore è di evitare il pugilato del valore sottostante, se il tipo di parametro è value class allora il metodo in questione si aspetterà in effetti un valore unboxed. Per gestire questo caso sto cercando di scartare il valore sottostante dalla value class. Ho bisogno di determinare se l'argomento è di una classe di valore, e qui mi ha colpito il primo ostacolo:Scala: riconoscimento degli oggetti delle classi di valore
def isObjectOfValueClass(arg: Any) =
classOf[AnyVal].isAssignableFrom(arg.getClass)
Questo non funziona come previsto, come il metodo restituisce true
per:
case class NonValueClass(underlying: Int)
Come può essere implementato isObjectOfValueClass
? O c'è un modo più semplice per richiamare in modo riflessivo un metodo che potrebbe prendere come oggetto un oggetto di valore?
A proposito, la classe di valori può includere non solo le primitive ma anche gli oggetti. –