首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >课内私隐

课内私隐
EN

Stack Overflow用户
提问于 2018-03-21 15:00:44
回答 2查看 3.9K关注 0票数 1

我有很多类,每个类都包含一个具有完全不同搜索键的映射。每个地图平均有4项=>,平均4项搜索键。

示例:

代码语言:javascript
复制
class A
{
 private final static Map<String, String> properties;
 static
  {
    Map<String, String> tmp = new HashMap<>();
    tmp.put("NearestNeighbour", "INTER_NEAREST");
    tmp.put("Bilinear", "INTER_LINEAR");
    tmp.put("Bicubic4x4", "INTER_CUBIC");
    properties = Collections.unmodifiableMap(tmp);
  }

  private enum InterpolationMode
  {
    NN("NearestNeighbour"),
    Bilinear("Bilinear"),
    Bicubic("Bicubic");

    private String mode;
    InterpolationMode(String mode) {
      this.mode = mode;
    }

    public String getMode(){
      return mode;
    }
  }
}

在这个类中,我的map键是NearestNeighbour, Bilinear, Bicubic4x4,所以我创建了一个私有枚举,并从映射中检索值,如下面的properties.get(InterpolationMode.Bilinear.getMode());

问题是,我有大约20个类,每个类都有自己的映射,有不同的键(它们没有关联)。全局包枚举对我来说没有任何意义,因为这些搜索键在任何方面都没有关联。在每堂课上创建这样的私人枚举是个好主意吗?还是有更好的方法来做到这一点,而且根本不使用枚举?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-21 15:05:27

为此目的使用枚举是完全可以的。您可以考虑的是使用枚举作为键(而不是字符串),并使用EnumMap代替HashMap

代码语言:javascript
复制
Map<InterpolationMode, String> tmp = new EnumMap<>(InterpolationMode.class);
tmp.put(InterpolationMode.NN, "INTER_NEAREST");
tmp.put(InterpolationMode.Bilinear, "INTER_LINEAR");
tmp.put(InterpolationMode.Bicubic, "INTER_CUBIC");

EnumMap的优点是它更紧凑、更高效。

票数 4
EN

Stack Overflow用户

发布于 2018-03-21 15:05:31

您创建许多类只是为了保存不同的数据映射吗?如果是这样,最好只创建一个类,然后从该类创建多个对象。

只要枚举具有实际意义(例如性别、银行账户类型),就可以使用全局枚举。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49409744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档