Я рефлективно вызываю метод, аргумент которого может быть или не быть экземпляром класс значения. Поскольку цель классов значений состоит в том, чтобы избежать упаковки базового значения, если тип параметра является классом значения, то рассматриваемый метод фактически будет ожидать неупакованного значения. Чтобы справиться с этим случаем, я пытаюсь развернуть базовое значение из класса значений. Сначала мне нужно определить, относится ли аргумент к классу значений, и здесь я натыкаюсь на первый камень преткновения:
def isObjectOfValueClass(arg: Any) =
classOf[AnyVal].isAssignableFrom(arg.getClass)
Это не работает должным образом, так как метод возвращает true
для:
case class NonValueClass(underlying: Int)
Как можно реализовать isObjectOfValueClass
? Или есть более простой способ рефлексивно вызвать метод, который может принимать объект класса значения в качестве аргумента?