gpt4 book ai didi

java - 如何存储用于构建键值组合的 Java 常量

转载 作者:行者123 更新时间:2023-11-30 05:56:46 25 4
gpt4 key购买 nike

假设我想将这些键的潜在键和潜在值存储为常量。我怎样才能做到这一点?还是我应该完全避免它?

这是我自己想到的方法,但正如您将看到的那样,它有一个明显的缺点。

public static class Foo { 

public static final String KEY = "foo" ;

public static class Values {

public static final String BAR = "bar" ;
public static final String HEY = "hey" ;

}

}

public static class Another {

public static final String KEY = "another" ;

public static class Values {

public static final String ONE = "1" ;
public static final String TWO = "two" ;
public static final String THREE = "THREE" ;

}

}

这允许我像这样访问这些 key

miscellaneousMethod( Foo.KEY, Foo.Values.BAR )
miscellaneousMethod( Another.KEY, Another.Values.TWO )

但是,我并不想为每个键/可能值对编写一个单独的静态内部类。

有没有更好的方法将键值对存储为常量?

我想将它们存储为常量,以便稍后与生成的 HashMap 进行比较。这样我就可以问这样的问题:

if( map.get( Foo.KEY ).equals( Foo.Values.HEY ) ) {/* 做一些事情 */}

最佳答案

如果它们都是常量,您可以使用枚举:

public enum ValueEnum {

FOO("foo", "bar", "hey"),
ANOTHER("another", "1", "two", "THREE"),

;

private final String key;

private final Set<String> values;

private ValueEnum(String key, String... values) {
this.key = key;
this.values = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(values)));
}

public final boolean isInMap(Map<String,String> map) {
if(map.containsKey(key)) {
return values.contains(map.get(key));
}
else {
return false;
}
}
}

然后

if( ValueEnum.FOO.isInMap(map) ) { /* do stuff */ }

关于java - 如何存储用于构建键值组合的 Java 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com