我刚刚从2.3.3升级到androidstudio3.0,并渴望尝试新的java8特性,这些特性现在已经在api26之前的版本中得到了支持。我准备好了 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;
}
}
错误是:
错误:(13,51)错误:条目在linkedhashmap中不是公共的;无法从外部包访问
编辑器本身没有显示任何错误;它只显示为gradle任务的输出 :app:compileDebugJavaWithJavac
.
我使用的是默认的工具链。我试着清理和重建这个项目。我还尝试了使缓存失效并重新启动android studio。
我可以通过将build.gradle文件中的语言改回1.7来避免错误。不幸的是,自从我 minSdkVersion
如果我17岁的话,我就不能利用资源和其他好东西。
有趣的是,我发现我可以通过使用完全限定名来解决这个错误 java.util.Map.Entry
而不是 Entry
. 我不知道为什么会这样 Entry
生成错误。
是否缺少某些配置设置?这是as 3.0中的已知错误吗?
1条答案
按热度按时间unftdfkk1#
你必须从入口拿Map
这条线
Map.Entry
我们需要从map接口获取条目,因为条目接口是以前创建的,但它是在map接口的最新更新中定义的。现在我们必须调用map来访问接口,或者更改包和文件夹导致了这种情况