Mark FeatureFlags impl member as final
Marking the member as final for non-test scenarios allows for
optimizations that may otherwise be unavailable, and avoids ambiguity
about mutability.
Bug: 280833463
Test: atest aconfig.test
Change-Id: Ia58a04c9a57ee06d68f4dd022ace5365c65f4cf5
diff --git a/tools/aconfig/aconfig/src/codegen/java.rs b/tools/aconfig/aconfig/src/codegen/java.rs
index 9abc892..0a52914 100644
--- a/tools/aconfig/aconfig/src/codegen/java.rs
+++ b/tools/aconfig/aconfig/src/codegen/java.rs
@@ -473,7 +473,7 @@
.unwrap();
let expect_flags_content = EXPECTED_FLAG_COMMON_CONTENT.to_string()
+ r#"
- private static FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
+ private static final FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
}"#;
let expect_featureflagsimpl_content = r#"
@@ -661,7 +661,7 @@
public static boolean enabledRoExported() {
return FEATURE_FLAGS.enabledRoExported();
}
- private static FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
+ private static final FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
}
"#;
@@ -1083,7 +1083,7 @@
public static boolean enabledRw() {
return FEATURE_FLAGS.enabledRw();
}
- private static FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
+ private static final FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
}"#;
let expect_customfeatureflags_content = r#"
diff --git a/tools/aconfig/aconfig/templates/Flags.java.template b/tools/aconfig/aconfig/templates/Flags.java.template
index e2f70b9..2d012f5 100644
--- a/tools/aconfig/aconfig/templates/Flags.java.template
+++ b/tools/aconfig/aconfig/templates/Flags.java.template
@@ -33,8 +33,11 @@
public static void unsetFeatureFlags() \{
Flags.FEATURE_FLAGS = null;
}
-{{ -endif }}
- private static FeatureFlags FEATURE_FLAGS{{ -if not is_test_mode }} = new FeatureFlagsImpl(){{ -endif- }};
+ private static FeatureFlags FEATURE_FLAGS;
+{{ -else }}
+
+ private static final FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
+{{ -endif }}
}