Scala: ключевое слово в качестве имени пакета
-
06-07-2019 - |
Вопрос
Я пытаюсь использовать библиотеку Java (исходный код недоступен), которая определяет некоторый пакет xxx.xxx.object . Scala жалуется на наличие «объекта» в имени пакета, поэтому я не могу импортировать из него и не могу ссылаться на его классы с полностью определенным именем.
Есть ли способ обойти это?
Решение
Обертывание объекта в `(кавычка рядом с 1) должно работать.
xxx.xxx.`object`
Другие советы
Чтобы заполнить agilefall ответ , Спецификация языка Scala упоминает, что импорт состоит из id
:
id ::= plainid
| ‘\`’ stringLit ‘\`’
идентификатор также может быть образован произвольной строкой между обратными кавычками (хост-системы могут накладывать некоторые ограничения на то, какие строки допустимы для идентификаторов). Затем идентификатор состоит из всех символов, за исключением самих обратных кавычек.
Заключенные в кавычки строки - это решение, когда нужно получить доступ к идентификаторам Java, которые являются зарезервированными словами в Scala.
Например, операторThread.yield ()
недопустим, посколькуyield
является зарезервированным словом в Scala. Однако здесь есть обходной путь:
Thread.`yield`()