It will make clearly nullability. Especially in Kotlin.
Builder method with annotations.
In Builder, parameter of constructor is for field with @AutoBundleField, which expects as required, and parameter has @NonNull annotation.
And not required field has @Nullable annotation.
public class MyActivity extends Activity {
@AutoBundleField String name;
@AutoBundleField(required=false) String nickName;
}
// here is generated builder
public final class MyActivityAutoBundle {
public static final class IntentBuilder {
final Bundle args;
public IntentBuilder(@NonNull String name) {
this.args = new Bundle();
this.args.putString("name", name);
}
public @NonNull MyActivityAutoBundle.IntentBuilder nickName(@Nullable String nickName) {
if (nickName != null) {
args.putString("nickName", nickName);
}
return this;
}
public @NonNull Intent build(@NonNull Context context) {
Intent intent = new Intent(context, ExampleActivity.class);
intent.putExtras(args);
return intent;
}
public @NonNull Intent build(@NonNull Intent intent) {
intent.putExtras(args);
return intent;
}
}
}
@Nullable makes required=false
@Nullable field will be not required.
Any annotation named Nullable will be ok.
(javax.annotation, android.support.annotation or any)
public class MyActivity extends Activity {
// it equals to @AutoBundleField(required=false)
@Nullable @AutoBundleField
String name;
@Nullable @AutoBundleField
Integer number;
}
NOTE
It brings new dependency with android support annotation library.
@Nullable
and@NonNull
supportIt will make clearly nullability. Especially in Kotlin.
Builder method with annotations.
In Builder, parameter of constructor is for field with
@AutoBundleField
, which expects as required, and parameter has@NonNull
annotation. And not required field has@Nullable
annotation.@Nullable
makesrequired=false
@Nullable
field will be not required.Any annotation named
Nullable
will be ok. (javax.annotation
,android.support.annotation
or any)NOTE
It brings new dependency with android support annotation library.