我在Android应用中有常量变量,如下所示。我想将它们移动到一个单独的常量类,以便它更清晰。你有什么建议?我在项目中创建了什么类型的文件,我只是在MainActivity类中导入该常量类?我要找的是类似于C ++中的constants.h文件。你们有什么建议?
public class MainActivity extends ActionBarActivity {
public static final String NET_SALE = "com.domain.mobile.tipcalculator.MESSAGE1";
public static final String SER_CHRG = "com.domain.mobile.tipcalculator.MESSAGE2";
public static final String TRN_IN = "com.domain.mobile.tipcalculator.MESSAGE3";
public static final String TRN_OUT = "com.domain.mobile.tipcalculator.MESSAGE4";
public static final String POOL = "com.domain.mobile.tipcalculator.MESSAGE5";
public static final String RADIO = "com.domain.mobile.tipcalculator.MESSAGE6";
答案 0 :(得分:3)
您可以将它们存储在包含public static final
个变量的类的文件中,并使用import static com.example.Constants.*
来访问它们。
但是,我建议在strings.xml中存储呈现给用户的任何内容,以便可以翻译它们。
答案 1 :(得分:3)
常见的解决方案是创建一个类Constants
,您可以在其中放置常量public static final
。您还应该使此类不可实例化,因为它实际上是有意义的。所以你可以建立它的构造函数private
。
常用的另一个解决方案是创建一个类可以实现的接口。
像这样 - interface Constants
和你的班级 - mainActivity implements Constants
。通常它被认为不是很好的解决方案,因为接口通常用于显示类行为。您可以参考更多信息Effective Java
- 第19项。
答案 2 :(得分:1)
或者我会建议枚举:
public enum Message{
NET_SALE("com.domain.mobile.tipcalculator.MESSAGE1"),
SER_CHRG("com.domain.mobile.tipcalculator.MESSAGE2"),
TR_IN("com.domain.mobile.tipcalculator.MESSAGE3"),
TR_OUT("com.domain.mobile.tipcalculator.MESSAGE4"),
POOL("com.domain.mobile.tipcalculator.MESSAGE5"),
RADIO("com.domain.mobile.tipcalculator.MESSAGE");
}
答案 3 :(得分:1)
我的问题是:这些常数在哪里使用?如果他们只在MainActivity中使用,那么他们应该保留在哪里。如果它们在多个位置使用(它们看起来不像 - 它们是Intent附加组件的键吗?)那么你应该研究一下这些值的基类是否有意义(protected
)并且只从该类继承以传递它们。
如果您只是使用这些来提供额外内容并且不想让它们公开,您可以使用静态工厂方法创建新的Intent来启动Activity,在内部提供额外内容,并使这些常量private
:
public static Intent newIntent(Context ctx, String netSale, String serChrg, String trnIn,
String trnOut, String pool, String radio) {
Intent intent = new Intent(ctx, MainActivity.class);
intent.putExtra(NET_SALE, netSale);
intent.putExtra(SER_CHRG, serChrg);
intent.putExtra(TRN_IN, trnIn);
intent.putExtra(TRN_OUT, trnOut);
intent.putExtra(POOL, pool);
intent.putExtra(RADIO, radio);
return intent;
}
答案 4 :(得分:0)
常量通常被声明为 public , static 和 final 。 因此,我们将在最终类中定义所有常量,如下所示:
public final class AppConstants {
public static final String EMAIL = "email";
public static final String ADDRESS = "address";
public static final String NAME = "name";
// inner class
public final class LANGUAGE {
public static final String ENGLISH = "en";
public static final String ARABIC = "ar";
private LANGUAGE() {
}
}
// private constructor to block initialisation
private AppConstants() {}
}
访问常量值,例如:
希望它对某人有帮助!