我正在制作Android库,供我的项目使用,需要一些常用工具。
而且,
在我的项目中(使用Android Studio),我将Lint检查设置为@NotNull/@Nullable problems
作为错误严重性。
在我的公共实用程序库中,有一个类DebugPreconditions,它涉及大量条件检查。如,
DebugPreconditions.checkNotNull(fragment);
Bundle bundle = fragment.getArguments();
bundle.putString(MainActivity.ARGS_SHOP_ID, shopId);
activity.replaceFragment(fragment, R.id.fragment_container, true);
DebugPreconditions.checkNotNull,
/**
* Ensures that an object reference passed as a parameter to the calling method is not null.
* @param <T> the type parameter
* @param reference an object reference
* @return the non-null reference that was validated
* @throws NullPointerException if {@code reference} is null
*/
public static <T> T checkNotNull(@Nullable T reference) {
if (reference == null) {
throw new NullPointerException();
}
return reference;
}
我遇到的问题是, Android检查仍然发现存在问题可能导致NullPointerException&#39;在`fragment.getArguments()
上但如果我使用Google Guava&#39;}错误通知将会消失。
任何人都可以帮助我?
答案 0 :(得分:0)
试试这个:
/**
* Ensures that an object reference passed as a parameter to the calling method is not null.
* @param <T> the type parameter
* @param reference an object reference
* @return the non-null reference that was validated
* @throws NullPointerException if {@code reference} is null
*/
@NotNull // <-- This is important.
public static <T> T checkNotNull(@Nullable T reference) {
if (reference == null) {
throw new NullPointerException();
}
return reference;
}
当您致电DebugPreconditions.checkNotNull
时,请将返回值分配回参考变量。像这样:
fragment = DebugPreconditions.checkNotNull(fragment);