实际上有两种 lint:一种属于编译器,因此是Java 特有的,一种属于Google 并且是Android 特有的。
如果您的警告是关于 Java 中并非特定于 Android 的某些内容,则会使用 @SuppressWarnings 抑制它,如果它是特定于 Android 的,则使用 @SuppressLint 抑制它。
Android Lint 警告
此处列出了 Lint 警告:http://tools.android.com/tips/lint-checks
假设您有一个关于缺少权限的警告,并且警告描述开始于“此检查扫描您的代码和库并查看正在使用的 API,并根据访问这些 API 所需的权限集进行检查。”在上面链接的 lint 警告页面中,我们发现:
缺少权限
摘要:缺少权限
优先级:9 / 10
严重性:错误
类别:正确性
此检查会扫描您的代码和库并查看正在使用的 API,并根据访问这些 API 所需的权限集进行检查。如果使用这些 API 的代码在运行时被调用,那么程序将会崩溃。
此外,对于可撤销的权限(使用 targetSdkVersion 23),如果用户在运行时拒绝权限请求,客户端代码还必须准备好处理引发异常的调用。
所以为了抑制这种情况,我们在代码上放了这个注解:
@SuppressLint("MissingPermission")
编译器警告
假设我们发现了这个警告:
“未经检查的强制转换:'java.lang.Object' 到 'java.lang.Integer' ...”
如果您在 Android Studio 的悬停弹出窗口中阅读此内容,则末尾有一个 More... 链接。当您单击More... 链接时,文本会展开,您会在底部找到:
“提示:将 -Xlint:unchecked 传递给 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 中使用的值。