首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrimitiveIterator不支持Android中的API去糖

PrimitiveIterator不支持Android中的API去糖
EN

Stack Overflow用户
提问于 2021-03-25 00:25:41
回答 1查看 34关注 0票数 0

我尝试在我的代码中使用PrimitiveIterator.OfInt、PrimitiveIterator.OfLong等。我的最低SDK版本是16,因此为了获得对Java 8类和接口的支持,我遵循了下面给出的API去丑化步骤:

https://developer.android.com/studio/write/java8-support#library-desugaring

因此,在我的模块build.gradle中,我做了以下更改:

代码语言:javascript
复制
defaultConfig{
    multiDexEnabled true
}

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        coreLibraryDesugaringEnabled true
    }

dependecies{
        implementation "androidx.multidex:multidex:$multidex_version"
        coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}

在此之后,我可以使用"java.util.Instant“、"java.util.Stream”之类的类,但仍然不能使用PrimitiveIterator接口。它仍然要求为API版本24添加注释。

此外,它还显示了对所需接口的支持,但似乎没有。https://developer.android.com/studio/write/java8-support-table

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-25 08:16:15

这很可能是Lint的问题。

我在使用API16镜像的虚拟设备和运行在Android5.1 (API 22)上的Wiko Lenn2上运行了下面的仪表化测试。在这两种情况下,当coreLibraryDesugaringEnabled设置为true时,测试都成功了;当coreLibraryDesugaringEnabled设置为false时,测试给出了ClassNotFoundException

所以我要说的是,标记出Lint与@SuppressLint("NewApi")有问题的语句,你就完成了。

代码语言:javascript
复制
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.PrimitiveIterator;

import androidx.test.ext.junit.runners.AndroidJUnit4;

@RunWith(AndroidJUnit4.class)
public class PrimitiveIteratorTest {

    PrimitiveIterator.OfInt intIterator;

    @Before
    public void setUpIterator() {
        intIterator = new PrimitiveIterator.OfInt() {

            final int[] intArray = {1,2,3,4,5,6,7,8,9,10};
            int index = -1;

            @Override
            public int nextInt() {
                return intArray[++index];
            }

            @Override
            public boolean hasNext() {
                return index < intArray.length - 1;
            }
        };
    }

    @Test
    public void primitiveIteratorTest(){

        int first = intIterator.nextInt();
        int second = intIterator.nextInt();

        assert(first == 1);
        assert(second == 2);
        assert(intIterator.hasNext());
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66785274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档