Автоматизированное преобразование исходного кода на Scala в Java?
(Да, я знаю, что я могу вызвать код Java из Scala, но это бессмысленно: я хочу УДАЛИТЬ код Java, а не держать его вокруг и смотреть на него и поддерживать его навсегда!)
Есть ли какие-либо утилиты для преобразования источника Java в источник Scala?
Я считаю, что теоретически это должно быть возможным для достижения минимальной потери.
Я нашел это, но кажется неактивным, вероятно, ошибкой/неполным...
http://sourceforge.net/projects/java2scala/
Любые альтернативы?
Ответы
Ответ 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.
Ответ 4
Вы можете использовать онлайн Java для конвертера Scala, который использует Scalagen.
Ответ 5
http://code.google.com/p/jatran/
(я не использовал это)
заметил это, март 2012: http://blog.mysema.com/2012/03/scalagen-java-to-scala-conversion.html
Ответ 6
Я не думаю, что можно автоматически преобразовать Java в Scala в общем случае. Многие конструкторы нижнего уровня в Java не существуют в Scala (например, поля и статические члены), Scala помещает ограничения на конструкторы, которые не существуют в Java, а Scala не имеет необработанных типов как Java (генерические файлы без указанных общих параметров).