Java 最佳实践静态最终映射值

标签 java optimization

<分区>

我有一个实用程序类,其中包含一个带有一些值的静态最终映射。我需要在另一个类(class)访问这张 map 。我应该只将 map 声明为公共(public)的,还是应该在实用程序类中编写一个 getter,从而让 map 成为私有(private)的?

两种方法都有效,但最佳做法是什么?

public MyUtilityClass {
  public static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(
      "title", 256,
      "text", 512);

}

public MyAnotherClass {

  public void someMethod() {
    //accessing the map directly
    MAX_LENGTHS.get("title")
  }

}

或者

public MyUtilityClass {
  private static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(
      "title", 256,
      "text", 512);

  public static final getMaxLengthMap() {return MAX_LENGTHS;}
}

public MyAnotherClass {
  public void someMethod() {
    //accessing the map directly
    getMaxLengthMap().get("title")
  }
}

嗯,实际上键是枚举值。 像这样的东西:

private static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(
      MyEnumClass.TITLE, 256,
      MyEnumClass.TEXT, 512);

最佳答案

setter/getter 不添加任何东西 - 我只是将其公开。

可能有意义的是有一个直接返回值的方法:

public MyUtilityClass {
  private static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(
      "title", 256,
      "text", 512);

  public static final getMaxLength(String item) {return MAX_LENGTHS.get(item);}
}

public MyAnotherClass {
  public void someMethod() {
    //accessing the map directly
    getMaxLength("title");
  }
}

这还允许您稍后轻松修改底层实现。例如,您可以为不在 map 中的项目等返回默认值。

关于Java 最佳实践静态最终映射值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339116/

相关文章:

php - 计算哪些产品一起可以提供所需的功率

javascript - Chrome 的 V8 标记功能反复优化直到放弃

javascript - 为什么这个 JavaScript 程序比 C++ 更快地填充一个大数组?

c# - 性能瓶颈 - 使用 Visual Studio

java - 方法 keyPressed() 忽略父类(super class)中定义的方法

java - 如何在 swagger codegen 中生成构造函数?

java - Android中如何避免跨类重复代码?

optimization - 关于内存,每个程序员都应该知道什么?

java - 如何通过在java中使用mysql数据库选择来增加我的主键

java - org.apache.jasper.JasperException : javax. el.PropertyNotFoundException:类 'java.lang.String' 没有属性 'user'