gpt4 book ai didi

java - Java 8 出现奇怪的 Android Studio 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:40 25 4
gpt4 key购买 nike

我刚刚从 Android Studio 2.3.3 升级到 Android Studio 3.0,很想尝试 API 26 之前版本现在支持的新 Java 8 功能。我在我的 build.gradle 文件中将 sourceCompatibilitytargetCompatibility 设置为 JavaVersion.VERSION_1_8。然后,不幸的是,我在下面的类中出错了:

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;
}
}

错误是:

Error:(13, 51) error: Entry is not public in LinkedHashMap; cannot be accessed from outside package

编辑器本身没有显示任何错误;它仅显示为 Gradle 任务 :app:compileDebugJavaWithJavac 的输出。

我使用的是默认工具链。我尝试清理和重建项目。我还尝试使缓存无效并重新启动 Android Studio。

我可以通过在 build.gradle 文件中将语言改回 1.7 来避免错误。不幸的是,由于我的 minSdkVersion 是 17,因此我将无法使用 try-with-resources 和其他好东西。

有趣的是,我发现我可以通过使用完全限定名称 java.util.Map.Entry 而不是 Entry 来解决该错误。我不知道为什么会这样,而裸名 Entry 会产生错误。

是否缺少某些配置设置?这是 AS 3.0 中的已知错误吗?

最佳答案

你必须从入口拿走 map

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

这一行 Map.Entry

我们需要从Map接口(interface)中获取Entry,因为Entry接口(interface)是之前制作的,但是在Map接口(interface)的最新更新中定义的。现在我们必须调用 map 访问接口(interface)或更改包和文件夹导致此

关于java - Java 8 出现奇怪的 Android Studio 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47042837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com