Java常量文件

时间:2010-10-05 17:37:10

标签: java android constants

我正在开发一个Android应用程序,而且我是Java和Android的新手。

我想创建一些常量以用于某些活动。我在哪里可以定义这些常量?

感谢。

4 个答案:

答案 0 :(得分:48)

在java和大多数OO语言中,仅仅为了保存常量来定义一个类被认为是不好的做法。在与它们相关联的类中定义常量要好得多。通常有一个。 e.g。

interface MyComponent {
  /** The default height for a component */
  public static final int DEFAULT_HEIGHT = 5;
  // other stuff
}

如果真的没有人愿意定义一个单独的类。

编辑:这里的关键是:

  1. 使常量易于查找。如果有一个“自然”放置它们,请将它们放在那里(即Component对象的默认高度属于Component类)。
  2. 没有比你需要的更高的耦合。将所有常量放在一个'常量'类中会产生高耦合,特别是随后的修饰符倾向于将所有常量放在Constants类中,无论是否存在自然可以放入的另一个类。
  3. 仅仅因为一个常量被多个类使用并不意味着它应该在'常量'类中。如果'Application'和使用A​​pplication类的类使用常量,则将其放在Application类中。这样你就不会增加耦合。

答案 1 :(得分:18)

通常,您使用Constants类,或者在使用它们的类中定义它们,la:

class Constants {
   public static final int NUM_TRIANGLES = 4;
   public static final String SOME_TEXT = "This is a constant";
}

然后你会通过以下方式来引用它们:

String inst = Constants.SOME_TEXT;

答案 2 :(得分:7)

最常见的方法是在您需要的课程中创建“constants”:

class Example { 
  private static final int FILENAME = "test.txt; 
} 

也可以声明default,受保护或公开,而不是私有。虽然定义常量被认为是OO anti pattern是一个特殊的'常量'(God)类,它存储整个应用程序的常量。或者,您也可以将配置数据存储在Java properties file中,这不被视为反模式。

另一种迅速普及的选择是使用Dependency Inject(DI)模式。此模式通常用于依赖对象,但它也可用于将常量值注入对象。例如,可以使用Google的轻量级Guice DI框架实现:

class Example {
  String filename;

  @Inject
  public Example(@ConfigFilename String filename) {
     this.filename = filename;        
  }

在特殊的Binder类中,您将值绑定到使用@ConfigFilename注释的字符串。这样,您就可以独立测试最小的耦合和类。

答案 3 :(得分:0)

您可以在Java枚举中定义一些常量。

单个Java枚举器可能包含多个关联数据字段。

Oracle提供this introduction to Java enumerations.