【发布时间】:2011-07-15 19:40:45
【问题描述】:
假设我想将这些键的潜在键和潜在值存储为常量。我怎样才能做到这一点?还是我应该完全避免它?
这是我自己想到的方法,但正如你所看到的,它有明显的失败。
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" ;
}
}
这让我可以像这样访问这些键
miscellaneousMethod( Foo.KEY, Foo.Values.BAR )
miscellaneousMethod( Another.KEY, Another.Values.TWO )
但是,我并不完全想为每个键/可能值对编写一个单独的静态内部类。
有没有更好的方法将键值对存储为常量?
我想将它们存储为常量,以便以后与生成的哈希图进行比较。这样我就可以问这样的问题:
if( map.get( Foo.KEY ).equals( Foo.Values.HEY ) ) { /* do stuff */ }
【问题讨论】:
-
你想用这个解决什么问题?
-
@Paul - 我得到一个动态生成的哈希图。我正在尝试查看地图中是否存在某些键。如果有,它们是否等于特定值?我想将它们存储在某个地方,因为我确实与许多地方的信息进行了比较。
-
我只会将 HashMap 保留在实用程序类中。使其成为单例并使用静态访问器来处理私有静态 HashMap。为方便起见,您可以使用
public static boolean hasValue(String key, String value)之类的方法(其中键和值的类型与地图中的内容匹配)来检查键是否具有特定值。