如何通过注释改进你的 Android 编码?
注释是一种元数据。另一方面,元数据是提供有关其他数据的信息的数据集合。在 Android 中有多种使用注解的方法。但是,在本节中,我们将讨论如何利用注释来改进我们的 Android 编码。正式地,Android 已经有支持注释,您可以通过如下所示的依赖项来合并这些注释
compile ‘com.android.support:support-annotations:latestVersionHere’
在这里,我们正在讨论一些很棒的注释,它们肯定会对您有所帮助。
Nullness 的注解
注释@Nullable 和@NonNull 用于验证变量、参数甚至返回值是否为空。
- @Nullable:此类表示可以为空的变量、参数或返回值。
- @NonNullable:不能为空的变量、参数或返回值。
Java
@NonNull
public View aFunction(@Nullable String gfg1, @NonNull String gfg2) {
// gfg1 can be null
// gfg2 cannot be null
// a non null view is required as a return
}
Java
View view = aFunction("Spandan", null);
Java
public void setText(@StringRes int gfgResID) {
// gfgResID is a string.
}
Java
someTextView.setText(30);
Java
@SomeWorkerThread
public void aFunction(){
// this is the method being called
}
Java
public void setBeta(@IntRange(from=10,to=200) int beta) {}
Java
@RequiresPermission(Manifest.permission.SET_WALLPAPER)
public abstract void functionForWallPaper(Bitmap gfgLogo) throws IOException;
结果,当您调用此函数,如下所示。在代码检查过程中,Android Studio 会告诉您 gfg2 不应为空值。
Java
View view = aFunction("Spandan", null);
资源注释
由于 Android 对资源(例如 drawable 和文本资源)的引用以整数形式提供,因此必须验证资源类型。期望参数对应于某种类型的资源(例如 Drawables)的代码可以传递预期的 int 引用类型。
Java
public void setText(@StringRes int gfgResID) {
// gfgResID is a string.
}
然后像下面这样调用这个方法:
Java
someTextView.setText(30);
如果参数中未给出 R.字符串,则注释会在代码检查期间发出警告。
线程注释
线程注释确定是否从要调用它的线程类型调用方法。
支持的注释包括:
- @BinderThread
- @工人线程
- @主线程
- @AnyThread
- @UiThread
如果你写这样的东西:
Java
@SomeWorkerThread
public void aFunction(){
// this is the method being called
}
GeekTip #1: If you call this method from a thread other than the worker thread, the warning will be shown.
具有值约束的注释
当我们需要限制参数时,我们可以使用@IntRange、@FloatRange、@Size注解来检查提供参数的值。当方法的调用者可能提供不正确的值(超出指定范围)时,这些会很有帮助。在以下示例中,@IntRange 注释保证提供的整数值必须在 10 到 200 的范围内。
Java
public void setBeta(@IntRange(from=10,to=200) int beta) {}
有权限的注释
要验证方法调用者的权限,请使用 @RequiresPermission 批注。以下示例中对setWallpaper()函数进行了注释,以保证该方法的调用者具有权限。
使用 SET WALLPAPERS 的权限
如果您在清单中没有适当权限的情况下调用此方法,则会出现警告。
Java
@RequiresPermission(Manifest.permission.SET_WALLPAPER)
public abstract void functionForWallPaper(Bitmap gfgLogo) throws IOException;
结论
到此我们结束我们的讨论,您可以阅读门户网站上发布的其他很棒的 GfG 文章,希望这篇文章可以帮助您找到使用 Android Annotations 的方法!