我不太熟悉Java并且需要一些枚举查找帮助(我认为这就是所谓的?)我有多年的C经验,所以我知道我想用C做什么,但是我不知道Java中的等效语法或构造。
我在这台计算机上没有C环境,因此语法可能会关闭,但这正是我想要完成的:
typedef enum regions_t {
REGION_CALIFORNIA,
REGION_HAWAII,
REGION_LOUISIANA,
REGION_NUM_REGIONS
} regions_t;
typedef struct regionData_t {
regions_t regionName;
char_t[50] url;
int32_t population;
} regionData_t;
regionData_t myRegions[REGION_NUM_REGIONS] {
{REGION_CALIFORNIA, "http://http://california.gov/", 10123321},
{REGION_HAWAII, "http://hawaii.gov", 5123321},
{REGION_LOUISIANA, "http://louisiana.gov/", 8123321}
}
通过这种方式,我可以以这种方式访问url数据,这种数据易于阅读并且易于扩展:
myRegions[REGION_HAWAII].url
如何在Java中实现相同的想法?
答案 0 :(得分:2)
我怀疑你需要这样的东西:
public enum Region {
CALIFORNIA("california-url", 1),
HAWAII("hawaii-url", 2),
LOUISIANA("louisiana-url", 3);
private String url;
private int population;
private Region(String url, int population) {
this.url = url;
this.population = population;
}
public int getPopulation() {
return population;
}
public String url() {
return url;
}
}
请注意,String url应该来自外部资源。
答案 1 :(得分:1)
又快又脏:
public enum Region {
CALIFORNIA, HAWAII, LOUISIANA
}
public class RegionData {
public final Region region;
public final String url;
public final int population;
public RegionData(Region region, String url, int population) {
this.region = region;
this.url = url;
this.popuplation = population;
}
}
…
Map<Region, RegionData> regionData = new HashMap<Region, RegionData>();
regionData.put(Region.CALIFORNIA, new RegionData(Region.CALIFORNIA, "http://http://california.gov/", 10123321));
…
System.out.println(regionData.get(Region.CALIFORNIA).url);
但你也可以使用Java中的枚举也是普通类的事实。
public enum Region {
CALIFORNIA("http://http://california.gov/", 10123321),
HAWAII("http://hawaii.gov", 5123321),
LOUISIANA("http://louisiana.gov/", 8123321);
public final String url;
public final int population;
private Region(String url, int population) {
this.url = url;
this.population;
}
}
…
System.out.println(Region.CALIFORNIA.url);
答案 2 :(得分:0)
Java的枚举也略有不同,但是您需要将所有这些信息封装在一个类中,而不是结构。我尽可能直接列出翻译:
public enum Region
{
REGION_CALIFORNIA,
REGION_HAWAII,
REGION_LOUISIANA;
}
public class RegionData
{
Region region;
String url;
int population;
public RegionData(Region region, String url, int population)
{
this.region = region;
this.url = url;
this.population = population;
}
}
然后,您需要查看HashTable类的HashMap以获得所需的查找功能:
http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html
答案 3 :(得分:0)
Java中的枚举实际上是类。所以你可以用它们做任何你喜欢的事情,除了一些事情,比如运行时的对象实例化。