Как использовать структурные типы в вызовах isInstanceOf?
-
27-10-2019 - |
Вопрос
Об этом говорит название.
Есть ли способ использовать тип e.г.new Object {def foo = "bar"}
в вызове isInstanceOf[<structural_type_here>]
?
Решение
Структурные типы не работают с кодовым кодом.Точно так же сопоставление шаблонов со структурными типами бессмысленно (они всегда совпадают).
Обычно в этом виновато стирание типов, но даже при отсутствии стирания это не сработает, поскольку JVM не понимает структурные типы.
С другой стороны, Scala могла быть достаточно умен, чтобы заставить проверку структурного типа работать через стирание.
Другие советы
Я хотел бы сказать, что вы можете использовать псевдоним типа:
родовое словоНо это всегда будет верным, благодаря стиранию.
Таким образом, вы можете либо использовать отражение, либо просто попытаться передать объект методу, принимающему структурный тип в качестве параметра - тогда компилятор выдаст ошибку, если он недействителен.