Рефлексивно определяя совместимость дженериков Scala

Учитывая тип цели (скажем, List[String]) и некоторый объект o, цель состоит в том, чтобы найти метод o с возвращаемым типом, который совместим с целевым типом.

В случае отсутствия обобщений это можно проверить, сравнив целевой тип и тип возвращаемого значения метода, используя <:< оператор (аналог скала отражения Java isAssignableFrom) от scala.reflect.runtime.universe,

Этот подход не работает при наличии обобщений: например, возвращаемый тип метода def getEmptyList[T]: List[T] = Nil не удовлетворяет List[T] <:< List[String], Как определить, что тип возвращаемого значенияgetEmptyList[T] действительно совместим с List[String]?

0 ответов

Другие вопросы по тегам