java 关于-Xlint:unchecked 重新编译

有时候我们在编译的时候会遇到警告

>>>>>使用了未经检查或不安全的操作。

注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

<<<<<<

根据提示是类型的转换类型不安全导致

可能的原因是

复制代码
class EmployeeDB {
    public ArrayList getList() {
        ArrayList<String> list = new ArrayList<String>();
        list.add(0, "kkqqq");
        list.add("sss");

        return list;
    }
}

然后有如下的调用
        EmployeeDB db = new EmployeeDB();
        ArrayList<String> al = db.getList();
复制代码

getList返回的类型其实是ArrayList<Object>,也就是说将ArrayList<Object>转为了ArrayList<String>

老是弹出这样子的警告总是不舒服的,那么该如何解决这样子的警告呢?

一、最安全的做法是知道所有的警告位置然后去消除这些不安全的类型转换

1、如果使用gradle的方式,则可以在Project的build.gradle中加入如下的代码

    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked"
        }
    }

然后重新编译则可以看到所有原本警告的提示变成了错误的提示;注:本人也不知道为啥在Project的build.gradle中加入这些代码会出现错误提示,坐等大神解答

 

二、可能只是觉得这个提示很烦人,所以想将这个警告提示给去掉

1、使用gradle方式在对应的子模块的build.gradle中加入

    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked"
        }
    }

则该模块中的所有unchecked警告都会去除

2、如果某些代码已经是老代码了导致无法再修改了,那么可以使用@SuppressWarnings("unchecked")

在对应的类型不安全的代码转换位置进行设置

        EmployeeDB db = new EmployeeDB();
        @SuppressWarnings("unchecked") ArrayList<String> al = db.getList();

 

posted @   LCAC  阅读(3974)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示