我可以将'@NonNull'注释设置为'member'在'onCreate'中初始化的内容吗?

时间:2015-09-25 08:37:33

标签: android android-studio android-support-library

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注释。 有可能吗?

1 个答案:

答案 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;
  }
}