public class NonNullSet extends Fragment {
@NonNull // android studio say 'Not-null field must be initialized.'
String mInitializedMember;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle arguments = getArguments();
mInitializedMember = arguments.getString("NonNullParam", "this is not null");
}
}
我想设置@NonNull注释。 有可能吗?
答案 0 :(得分:3)
没有。 @NonNull
表示某个字段从不为空。在您的情况下,从创建时间类(因此构造函数)到onCreate
之前它将为null。就像您尝试标记此字段final
一样 - 有时字段为null
,因此这不合法。
但是,您可以创建一个标有@NonNull
的方法,并从那里返回您的字符串。我相信(虽然我不确定)如果断言该字段不是null
,Android Studio会正确处理它:
@NonNull
private String getMember() {
if (mInitializedMember == null) {
throw new IllegalStateException("Member is null");
} else {
return mInitializedMember;
}
}