2016-05-27 1 views

ответ

1

Да, если у вас есть Foo как Type, вы можете найти тип возврата метода bar как Type, а также.

import scala.reflect.runtime.universe._ 

typeOf[Foo]      // Get the type of Foo 
    .decls       // Get Foo's declared members 
    .find(_.name.toString == "bar") // Find the member named "bar" as a symbol 
    .head       // Unsafely access it for now, use Option and map under normal conditions 
    .asMethod      // Coerce to a method symbol 
    .returnType      // Access the return type 
+0

Большое спасибо! позвольте мне сначала попробовать. – tribbloid

+0

Я не думаю, что это работает, первый .decls не может быть найден в TypeTag (устаревшие? Должны быть .members). Если Foo является общей функцией, вывод returnType будет удален. – tribbloid

+0

См. Http://stackoverflow.com/questions/37714572/in-scala-reflection-why-reflection-function-on-typetag-still-has-type-erasure для примера счетчика – tribbloid

Смежные вопросы