【问题标题】:Change constants defined in interface更改接口中定义的常量
【发布时间】:2012-04-19 08:26:56
【问题描述】:

我的接口承载了我的应用程序所需的常量。我希望能够在运行时进行更改,因为它们取决于各种条件。我创建了一个小类,它将有处理常量的方法。在这个类中,我用常量实现了接口,我可以访问它们,但我不能改变它们的内容。我知道常量应该是稳定不变的,但是,有什么办法可以改变它们吗?

谢谢

编辑:

当然这不是我的想法,我需要更改现成的库,这应该取决于 Android 制造商。我在问是否有其他方法然后重新实现它。

【问题讨论】:

  • “变化”和“恒定”这两个词并不能很好地相互配合。因此,术语“变量”(可以变化的事物)。
  • 投反对票似乎不合适,就像有人只是在阅读标题而不是阅读实际问题。

标签: java interface constants


【解决方案1】:

“变化”和“恒定”这两个词并不能很好地相互配合。因此,术语“变量”(可以变化的事物)。 ;-)

您可以使用final variables 实现您想要的。这些变量只能被赋值一次。您不能将它们放在 interface 上,但您可以让它们成为一个单例的成员,该单例被初始化并将 final 设置为适当的运行时值。

【讨论】:

    【解决方案2】:

    常数正是他们在锡上所说的!

    您可能想尝试不使用 contants 并读取静态、私有、公共等!

    【讨论】:

      【解决方案3】:

      编译器通常内联编译时知道的常量。这意味着即使您使用反射更改值,它也不会总是更改使用常量的位置。

      解决这个问题的方法是让您的“常量”动态化。例如

      interface Constants {
          int MAX_VALUE = Integer.getInteger("max.value", Integer.MAX_VALUE);
          String USER_HOME = System.getProperty("user.home");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多