gpt4 book ai didi

java - @SuppressWarnings 与@SuppressLint

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:34 25 4
gpt4 key购买 nike

谁能给我解释一下@SuppressWarnings@SuppressLint 之间的区别?我们什么时候应该使用一个而不是另一个?

我已经阅读了文档,但仍然不明白其中的区别。使用示例/示例代码进行解释将不胜感激。谢谢。

最佳答案

实际上有 两个 lints:一个属于编译器,因此是特定于 Java 的,一个属于 Google,是特定于 Android 的。

如果您的警告是关于 Java 中不特定于 Android 的内容,它会被 @SuppressWarnings 抑制,如果它是特定于 Android 的,它会被 @SuppressLint.

Android Lint 警告

此处列出了 Lint 警告:http://tools.android.com/tips/lint-checks

假设您有一个关于缺少权限的警告,并且警告描述开始于“此检查扫描您的代码和库并查看正在使用的 API,并根据访问这些 API 所需的权限集进行检查”在上面链接的 lint 警告页面中,我们发现了这一点:

MissingPermission

Summary: Missing Permissions

Priority: 9 / 10 Severity: Error Category: Correctness

This check scans through your code and libraries and looks at the APIs being used, and checks this against the set of permissions required to access those APIs. If the code using those APIs is called at runtime, then the program will crash.

Furthermore, for permissions that are revocable (with targetSdkVersion 23), client code must also be prepared to handle the calls throwing an exception if the user rejects the request for permission at runtime.

因此,为了抑制这一点,我们在代码上添加了这个注释:

@SuppressLint("MissingPermission")

编译器警告

假设我们发现了这个警告:

“未经检查的转换:'java.lang.Object' 到 'java.lang.Integer' ...”

如果您在 Android Studio 的悬停弹出窗口中阅读本文,末尾有一个 More... 链接。当您单击 More... 链接时,文本会展开,您会在底部找到它:

“提示:将 -Xlint:unchecked 传递给 javac 以获得更多详细信息。”

这告诉您可以在注释中使用“unchecked”,如下所示:

@SuppressWarnings("unchecked")

要获得编译器警告列表,请运行 javac -X:

C:\>javac -X
-Xlint Enable recommended warnings
-Xlint:{all,auxiliaryclass,cast,classfile,deprecation,dep-ann,divzero,empty,fallthrough,finally,options,overloads,overrides,path,processing,rawtypes,serial,static,try,unchecked,varargs,-auxiliaryclass,-cast,-classfile,-deprecation,-dep-ann,-divzero,-empty,-fallthrough,-finally,-options,-overloads,-overrides,-path,-processing,-rawtypes,-serial,-static,-try,-unchecked,-varargs,none} Enable or disable specific warnings
.
.
.

这些是您可以在 @SuppressWarnings 中使用的值。

关于java - @SuppressWarnings 与@SuppressLint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126565/

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