Ted*_*opp 5 java android java-8 android-studio-3.0
我刚刚从2.3.3升级到Android Studio 3.0,并且急于尝试现在支持API 26之前版本的新Java 8功能.我设置sourceCompatibility和targetCompatibility对JavaVersion.VERSION_1_8我的build.gradle文件.然后,不幸的是,我在下面的课程中遇到了错误:
package com.zigzagworld.util;
import java.util.LinkedHashMap;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final int maxSize;
public LRUCache(int maxSize) {
super(Math.min(16, (int) ((maxSize + 1) / 0.75f)), 0.75f, true);
this.maxSize = maxSize;
}
@Override protected boolean removeEldestEntry(Entry<K, V> eldest) {
return size() > maxSize;
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
错误:(13,51)错误:LinkedHashMap中的条目不公开; 无法从外部包裹访问
编辑器本身没有显示任何错误; 它只显示为Gradle任务的输出:app:compileDebugJavaWithJavac.
我正在使用默认工具链.我尝试过清理和重建项目.我还尝试使缓存无效并重新启动Android Studio.
我可以通过在build.gradle文件中将语言更改回1.7来避免错误.不幸的是,因为我minSdkVersion17岁,所以我将无法使用try-with-resources和其他好东西.
有趣的是,我发现我可以通过使用完全限定名称java.util.Map.Entry而不是使用来解决错误Entry.我不知道为什么会这样,而裸名称会Entry产生错误.
我缺少一些配置设置吗?这是AS 3.0中的已知错误吗?
您必须从入口处领取地图
@Override
protected boolean removeEldestEntry (Map.Entry<K,V> eldest) {
return size() > maxSize;
}
Run Code Online (Sandbox Code Playgroud)
这条线 Map.Entry
我们需要从Map接口获取Entry,因为Entry接口是之前制作的,但是是在Map接口的最新更新中定义的。现在我们必须调用Map来访问接口或者更改包和文件夹导致这个
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |