Java8出现奇怪的android studio错误

ecbunoof  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(345)

我刚刚从2.3.3升级到androidstudio3.0,并渴望尝试新的java8特性,这些特性现在已经在api26之前的版本中得到了支持。我准备好了 sourceCompatibility 以及 targetCompatibilityJavaVersion.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中的已知错误吗?

unftdfkk

unftdfkk1#

你必须从入口拿Map

@Override
 protected boolean removeEldestEntry (Map.Entry<K,V> eldest) {
  return size() > maxSize;
  }

这条线 Map.Entry 我们需要从map接口获取条目,因为条目接口是以前创建的,但它是在map接口的最新更新中定义的。现在我们必须调用map来访问接口,或者更改包和文件夹导致了这种情况

相关问题