Android:能否将@SuppressWarnings注解应用于单条语句而非整个方法?
能否为单条语句添加@SuppressWarnings("deprecation")?
很遗憾,不行。Java(包括Android开发用的Java)里的@SuppressWarnings注解并不支持直接作用在单条语句上——它的作用范围仅限类、方法、字段、参数、构造方法这些级别,没法单独给某一行代码加注解来精准抑制警告。
不过有个实用的小技巧能帮你实现类似的效果:把那条调用过时API的语句单独抽成一个私有小方法,然后给这个小方法加上@SuppressWarnings("deprecation")注解。这样就只会抑制这个小方法里的过时警告,完全不会影响myMethod里的其他代码。
举个例子,你的代码可以改成这样:
public void myMethod(ImageView icon) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { icon.setImageAlpha(0xFF); } else { setLegacyIconAlpha(icon, 0xFF); } } @SuppressWarnings("deprecation") private void setLegacyIconAlpha(ImageView icon, int alpha) { icon.setAlpha(alpha); }
这么处理后,只有setLegacyIconAlpha方法里的setAlpha调用会被忽略警告,myMethod里其他代码如果用到了过时API,依然会正常触发Lint/Gradle的警告,刚好满足你想要的“只抑制单条语句警告”的需求。
补充一句:如果是用Kotlin开发的话,倒是可以用@Suppress("DEPRECATION")配合代码块来实现更精准的控制,但Java里没有这个特性,所以上面的方法是Java环境下最靠谱的解决方案。
内容的提问来源于stack exchange,提问作者user2768
相关产品推荐
相关产品推荐

