有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

全局变量如何在Java中的所有类之间共享要使用的语言环境?

我决定我的软件需要国际化,所以我让其中一个类提示用户使用哪种语言环境。在其他7个类中,我添加了一个参数来接收这些信息。现在,不知怎么的,这感觉不对劲。这似乎使事情复杂化了

更自然的做法是将所选语言环境设置为“全局”变量,而不是向所有其他7个类添加一个参数来获取这些信息。(你同意吗?)

所以我看了一下建议:定义一个带有所需变量的公共类作为它的静态成员(for example here)

然而,在本例中,所有类之间共享的值独立于用户输入。我不知道如何共享一个尚未设置的变量。有没有人愿意为我在这上面说几句话


共 (2) 个答案

  1. # 1 楼答案

    如果它是一个web应用程序,那么可以将区域设置放入HTTP会话中

    如果您使用的是JSF或Portlet,那么您已经内置了语言环境支持

  2. # 2 楼答案

    假设您想创建一个GlobalSettings类。您可以执行以下操作

    class GlobalSettings {
      private static Locale locale = Locale.US;
    
      public static Locale getLocale() {
        return locale;
      }
    
      public static void setLocale(Locale newValue) {
        locale = newValue;
      }
    }
    

    然后,从任何地方,你都可以调用GlobalSettings。getLocale()。例如,您可以更复杂一些,拥有一个带有私有字段区域设置的GlobalSettings实例,然后您可以轻松地模拟或替换单元测试