Подтвердить что ты не робот

Автоматизированное преобразование исходного кода на Scala в Java?

(Да, я знаю, что я могу вызвать код Java из Scala, но это бессмысленно: я хочу УДАЛИТЬ код Java, а не держать его вокруг и смотреть на него и поддерживать его навсегда!)

Есть ли какие-либо утилиты для преобразования источника Java в источник Scala?

Я считаю, что теоретически это должно быть возможным для достижения минимальной потери.

Я нашел это, но кажется неактивным, вероятно, ошибкой/неполным... http://sourceforge.net/projects/java2scala/

Любые альтернативы?

4b9b3361

Ответ 1

IntelliJ kinda, sorta, делает. Вам нужно открыть проект с помощью источников Java. Затем вы можете копировать/вставлять выражения, методы или целые классы в файл .scala. Это преобразуется в эквивалентный код Scala.

Верность конверсии не идеальна, и по этой причине она еще не поддерживает массовое преобразование.

Я рекомендую использовать последнюю версию IntelliJ и Scala Плагин. Community Edition является бесплатным.

Кроме того, Пол Филлипс однажды начал проект Scalify для перевода кода с Java на Scala (или, потенциально, ваш любимый язык), и даже улучшить его в этом процессе! Он объясняет концепцию в этом video. Однако это усилие заглохло, по-видимому, потому, что он обратил внимание на непосредственное участие в компиляторе Scala и стандартной библиотеке.

Ответ 2

В IntelliJ IDEA theres рефакторинг называется "Преобразовать в Scala". Он находится в меню Refactor (после установки плагина Scala) Ctrl + Shift + G. Поэтому вам не нужно играть с копией/вставкой.

Просто убедитесь, что у вас открыт Java файл, нет этой опции, если это Scala или другой файл.

Ответ 3

Я только что опубликовал следующий инструмент: Scalagen. Я тоже попробовал Jatran, но был разочарован некоторыми ошибками и сложной интеграцией. Scalagen расширяемый и поставляется с плагином Maven.

Ответ 6

Я не думаю, что можно автоматически преобразовать Java в Scala в общем случае. Многие конструкторы нижнего уровня в Java не существуют в Scala (например, поля и статические члены), Scala помещает ограничения на конструкторы, которые не существуют в Java, а Scala не имеет необработанных типов как Java (генерические файлы без указанных общих параметров).