xan*_*291 8 java lambda android java-8
我得到了"匿名新的runnable()可以替换为lambda"警告与以下代码.
final ScrollView sv = (ScrollView) findViewById(R.id.scrollView);
sv.post(new Runnable() {
@Override
public void run() {
sv.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Run Code Online (Sandbox Code Playgroud)
我非常努力地在Google上搜索,似乎是使用lambda表达式重写...
final ScrollView sv = (ScrollView) findViewById(R.id.scrollView);
Runnable test = () -> sv.fullScroll(ScrollView.FOCUS_DOWN);
test.run();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行应用程序时,Android Studio会因错误而停止,如下所示:
Error:(78, 40) error: lambda expressions are not supported in -source 1.7
(use -source 8 or higher to enable lambda expressions)
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么Android Studio让我使用lambda表达式,即使它无法编译.这是一个错误吗?
此外,我尝试使用gradle-retrolambda,但它很难用于biginner.
由于我无法编译我的代码,我不确定上述lambda expresssion是否正确.
在我看来,IDE不应该抱怨代码无法编译.所以我认为应该抑制使用lambda表达式的警告.但我不知道怎么会......
任何帮助表示赞赏.
首先,"anonymous new runnable()可以替换为lambda"是一个警告,如你所说.虽然这样的警告不像编译器错误那么严重,但您仍应了解警告的原因,以便做出明智的决定如何处理它.在这种情况下,警告来自IDE,而不是编译器,可以安全地忽略.Android Studio应该有一个设置,您可以在其中禁用此警告,但我一直无法找到确切的方法.我首先点击new Runnable()源代码中的文本,然后按Alt-Enter查看快速修复选项.
或者,如果要在代码中使用lambda函数,则需要启用对Java 8的支持,作为您获得的错误消息.请注意,某些Java 8功能仅在您的应用针对Kit Kat或更高版本时可用.早期版本的Android支持Lambda函数,因此在这种情况下您不必担心.要为项目启用Java 8,请将build.gradle文件修改为类似于以下内容:
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Run Code Online (Sandbox Code Playgroud)
关键是compileOptions关闭.剩下的就是给出文件所属的上下文.
请注意,我没有编译和测试过这个.另外,我不确定,如果你需要同时sourceCompatibility和targetCompatibility.我建议你做一些研究和实验,以确定是否需要这两个,以便在你想要定位的设备上编译和运行你的应用程序.
资料来源:
如何在Android Studio和Gradle中设置-source 1.7
经过谷歌搜索,我发现Android还没有正式支持JDK8。 请参阅此链接
虽然我们可以使用Retrolambda(对于 Android Studio,它是gradle-retrolambda)或RxJava进行 JDK8 风格的编码,但它们只是一种风格......
我的问题是由于安装JDK8引起的,而不是应该安装JDK7。
我认为最好安装JDK8,因为oracle现在正式支持JDK8并且已经终止更新JDK7,但这是错误的想法。
我卸载JDK8并安装JDK7后,IDE不会警告使用lambda表达式,或者编译时不会出现lambda表达式不支持-source 1.7错误。
| 归档时间: |
|
| 查看次数: |
5140 次 |
| 最近记录: |