Это сработало бы, если obj.getKeys () был java.util.Iterator<String>
. Я полагаю, это не так.
Если obj.getKeys()
это просто java.util.Iterator
в необработанном виде, а не java.util.Iterator<String>
, даже не java.util.Iterator<?>
, это то, что scala имеет тенденцию не нравиться, но в любом случае, scala не будет печатать ваше выражение как List[String]
если нет гарантии obj.getKeys()
содержит строку.
Если вы знаете, что ваш итератор в строках, но тип этого не говорит, вы можете разыграть:
obj.getKeys().asInstanceOf[java.util.Iterator[String]]
(затем продолжайте с .asScala.toList
)
Обратите внимание, что, как и в java, и из-за стирания типа, это приведение не будет проверяться (вы получите предупреждение). Если вы хотите немедленно проверить, что у вас есть строки, вы можете сделать
obj.getKeys().map(_.asInstanceOf[String])
, который будет проверять тип каждого элемента во время итерации для построения списка