首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java 8到Java 7语法删除Java代码的工具?

从Java 8到Java 7语法删除Java代码的工具?
EN

Stack Overflow用户
提问于 2014-07-25 04:51:18
回答 2查看 5.4K关注 0票数 5

有人知道有什么工具可以将使用lambda和方法引用的Java8代码(在源代码级别)转换为使用匿名内部类的Java7代码吗?我知道Retrolambda,但它工作在字节码级别,而不是源代码级别。

目前,我有一个可以作为IntelliJ插件工作的版本。我扩展了当前的IntelliJ代码,以一次性转换包中的所有lambda,而不是selecting each lambda individually and converting to anonymous inner class。然而,这种方法的问题是它不能作为一个独立的工具工作,比如一个maven插件,因为它需要一个IntelliJ上下文才能工作。

编辑:请注意,重点是将lamda/方法引用转换为匿名内部类。我不关心Java 8中的API更改,这些更改会被Java 7编译器捕获并报告为编译错误。

EN

回答 2

Stack Overflow用户

发布于 2014-08-11 17:44:51

在IntelliJ Idea中,打开“项目结构”,然后将“项目语言级别”设置为7.0。如果需要的话,再次分析你的代码。这在大多数情况下都会有帮助,但更倾向于逐类(逐个文件)地执行。

票数 1
EN

Stack Overflow用户

发布于 2017-04-01 00:44:20

你可以试试this。这是一个人的概念验证,可以做一些接近你所要求的事情:

它可以将带有lambda初始化器的函数接口的变量声明转换为匿名内部类。

例如:

代码语言:javascript
复制
Callable<String> callable = () -> "abc" ;

// Converted to:

Callable<String> callable = new Callable<String>() {
    public String call() throws java.lang.Exception { 
        return "abc"; 
    }
};

我不知道它是否可以转换匿名lambda(即那些未声明为变量的lambda)或方法引用(例如Person::compareByAge)或闭包(局部变量捕获),但如果需要,这些功能可能是您可以扩展他的代码来实现的。

作者指出,“距离功能完整还有很长的路要走,但它是可用的……”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24943726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档