记一次忽略@SuppressLint("NewApi")提示引发的血案

简介: 记一次忽略@SuppressLint("NewApi")提示引发的血案

记一次忽略@SuppressLint("NewApi")提示引发的血案

本次开发中用到了Java中的优先级队列,需要根据给定的优先级对元素进行排序,于是我写出了下面这段代码:

private Comparator<CustomObject> comparator = new Comparator<CustomObject>() {
    @Override
    public int compare(CustomObject o1, CustomObject o2) {
        /**
         * 负数、0、正数
         * 小于、等于、大于
         */
        return o1.priority() - o2.priority();
    }
};


/**
 * 优先级队列
 */
private PriorityQueue<CustomObject> queue = new PriorityQueue<>(comparator);

与以往不同的是,在new PriorityQueue<>(comparator)构造器代码的下方有红色error提示,IDE给了版本兼容的提示,如下图:

在这里插入图片描述

当然了,作为一个成熟的开发,我毫不犹豫、义无反顾的按下了option + 回车键,使用了一种隐藏问题的方式,SuppressLint注解,代码如下所示:

    @SuppressLint("NewApi")
    private PriorityQueue<CustomObject> queue = new PriorityQueue<>(comparator);

烦人的提示终于没了,清爽多了。

出来混迟早要还的,没过多久我就收到了crash报告,具体如下所示:

java.lang.NoSuchMethodError: No direct method (Ljava/util/Comparator;)V in class Ljava/util/PriorityQueue; or its super classes (declaration of 'java.util.PriorityQueue' appears in /system/framework/core-libart.jar)

说到底,我用了一个低版本不存在的api方法,IDE给了我提示让我改,然后我因为觉得这个提示烦人,就用注解把提示隐藏掉了,问题依旧没有解决。

好吧,认真解决问题吧。经过考量,将PriorityQueue + Comparator替换为List + Comparator + Collections.sort(list, comparator)的方式,问题解决了。

这个故事告诉我们,IDE没事不会瞎给你提示的,以后长点心吧。

参考:
https://stackoverflow.com/questions/36103606/nosuchmethoderror-for-comparator/36103681

相关文章
|
1月前
|
搜索推荐 安全 网络安全
为什么你的网站总被提示不安全?
未安装SSL证书是导致网站总是被提示不安全的主要原因之一。通过安装SSL证书,不仅可以加密数据传输,防止数据泄露,还能提升用户的信任度和网站的搜索引擎排名。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
ChatGPT提示技巧——“让我们思考一下”提示
ChatGPT提示技巧——“让我们思考一下”提示
26 4
|
2月前
|
存储 人工智能 iOS开发
ChatGPT提示技巧——零,一和少量示例提示
ChatGPT提示技巧——零,一和少量示例提示
58 4
|
6月前
|
自然语言处理 机器人
chatGPT提示邮箱不支持的解决办法汇总!
一些用户在创建过程中遇到了提示“Oops! The email you provided is not supported”。中文的意思是“糟糕,邮箱不支持”。该如何解决呢?
2651 0
删除前提示
删除前提示
46 0
|
存储 开发工具 数据安全/隐私保护
使用 Sourcetree 提示需要输入密码 #62
使用 Sourcetree 提示需要输入密码 #62
282 0
|
数据安全/隐私保护
模拟用户登录情况,并且只能登录三次(只允许输入三次密码,如果密码正确,则提示登录成功,若三次均输入错误,则退出程序)
模拟用户登录情况,并且只能登录三次(只允许输入三次密码,如果密码正确,则提示登录成功,若三次均输入错误,则退出程序)
260 0
模拟用户登录情况,并且只能登录三次(只允许输入三次密码,如果密码正确,则提示登录成功,若三次均输入错误,则退出程序)
|
网络安全 开发工具 数据安全/隐私保护
SourceTree 一直提示输入密码问题
问题: 不管输入哪个密码都是一直循环提示需要输入密码,并且也确认在github上添加过ssh key。 解决办法: 先在命令行git clone一次之后,再重新使用SourceTree进行克隆就没有问题了,后面就可以随意使用SourceTree进行克隆其他项目。 不止github.com,code.aliyun.com也可能出现该问题,同样的解决办法处理即
1118 0