Могу ли я вызвать статический метод Java с использованием структурной типизации? - PullRequest
3 голосов
/ 04 ноября 2010

Я хочу сделать что-то вроде (обратите внимание, что я знаю, что это не работает, но мой вопрос - возможно ли заставить это работать):

object O {
  def main(args: Array[String]) {
    val clazzname = classOf[System].getName
    val c = Class.forName(clazzname).asInstanceOf[{def currentTimeMillis: Long}]
    c.currentTimeMillis
  }
}

Возможно ли это?(без использования отражения)

Реальный вариант использования - для чтения сериализованных сообщений protobuf. * ​​1006 *

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

Короче говоря: Нет

Хотелось бы, чтобы был лучший ответ, но, как вы уже можете видеть из списка рассылки, это (в настоящее время) невозможно.Надеемся, что ситуация улучшится по мере развития поддержки рефлексии в Scala.

0 голосов
/ 04 ноября 2010

Будет ли это работать для вас:

val c = new {                     
  def cm = System.currentTimeMillis  
}

Однако обратите внимание, что структурные типы используют отражение внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...