@SuppressWarnings与@SuppressLint
任何人都可以向我解释和之间的区别吗?我们什么时候应该使用一个而不是另一个?@SuppressWarnings
@SuppressLint
我已经阅读了文档,但仍然没有得到差异。使用示例/示例代码进行解释将不胜感激。谢谢。
任何人都可以向我解释和之间的区别吗?我们什么时候应该使用一个而不是另一个?@SuppressWarnings
@SuppressLint
我已经阅读了文档,但仍然没有得到差异。使用示例/示例代码进行解释将不胜感激。谢谢。
实际上有两个lint:一个属于编译器,所以是特定于Java的,另一个属于Google并且是Android特定的。
如果您的警告是关于 Java 中不特定于 Android 的内容,则会使用 禁止显示,如果警告是特定于 Android 的,则会使用 .@SuppressWarnings
@SuppressLint
此处列出了 Lint 警告:http://tools.android.com/tips/lint-checks
因此,假设您有一个关于缺少权限的警告,并且警告说明以“此检查扫描您的代码和库并查看正在使用的 API,并根据访问这些 API 所需的权限集进行检查。在上面链接的 lint 警告页面中,我们发现:
缺少权限
摘要:缺少权限
优先级: 9 / 10 严重性: 错误 类别: 正确性
此检查将扫描您的代码和库,查看正在使用的 API,并根据访问这些 API 所需的权限集进行检查。如果在运行时调用使用这些 API 的代码,则程序将崩溃。
此外,对于可撤销的权限(使用 targetSdkVersion 23),还必须准备好客户端代码,以便在用户在运行时拒绝权限请求时处理引发异常的调用。
因此,为了抑制这一点,我们将此注释放在代码上:
@SuppressLint("MissingPermission")
假设我们发现了此警告:
“Unchecked cast: 'java.lang.Object' to 'java.lang.Integer' ...”
如果您在Android Studio的悬停弹出窗口中阅读此内容,则末尾有一个链接。单击该链接时,文本将展开,并在底部找到以下内容:More...
More...
“提示:将 -Xlint:uncheck 传递给 javac 以获取更多详细信息。
这告诉您,您将在注释中使用“未选中”,如下所示:
@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
此外,还有(科特林。抑制),这会抑制 Android 警告以及 .@Suppress
@SuppressLint
例如。@Suppress("AlwaysShowAction")