我在Java中遇到以下问题。
我有这个包含2个值的eunm,表示2个字符串值“COORDINATION”和“PISC”:
private enum exclusion {COORDINATION, PISC};
所以我创建了这个 getEnums()方法,该方法将包含枚举值的 HashSet 作为字符串返回:
private static HashSet<String> getEnums() {
HashSet<String> values = new HashSet<String>();
for (Exclusion e : Exclusion.values()) {
//values.add(Exclusion.values());
values.add(Exclusion.values().toString());
System.out.println("Inserted values: " + e.values().toString());
}
return values;
}
问题是,当调用此方法时,返回的值对象包含2个字符串,但是使用deubugget时,放入此 HashSet 的值不是“COORDINATION”和“PISC”但是这样的话:
Inserted values: [Legp.prc.km.actions.configurationProject.ConfigurationProjectAction$Exclusion;@34653605
Valore inserito: [Legp.prc.km.actions.configurationProject.ConfigurationProjectAction$Exclusion;@39510a30
我认为问题与我如何将值插入值HashSet
有关然后,在我的代码的其他地方,我有以下周期:
HashSet esclusionHashSet = getEnums();
for (DLFolder dlFolder : listFolder) {
if (dlFolder.getPath().split("/").length <= 4 && dlFolder.getPath().contains(KmConstants.TAXONOMY_PARENT_FOLDER) && !esclusionHashSet.contains(dlFolder.getName())) {
treePath.put(dlFolder.getPath(), dlFolder);
path.add(dlFolder.getPath());
}
}
正如你在这里看到的所有元素到我的列表中的对象一样,我检查 dlFolder 对象的名称(可能是“COORDINATION”或< strong>“PISC”不包含 esclusionHashSet ,其中包含原始排除枚举中的值,检查由以下方式完成:
!esclusionHashSet.contains(dlFolder.getName())
问题是它返回alwaysl FALSE(似乎 esclusionHashSet *不包含**“COORDINATION”和“PISC”值)
如何解决此问题?我错过了什么?
答案 0 :(得分:2)
而不是:
for (Exclusion e : Exclusion.values()) {
//values.add(Exclusion.values());
values.add(Exclusion.values().toString());
System.out.println("Inserted values: " + e.values().toString());
}
你应该这样做:
for (Exclusion e : Exclusion.values()) {
values.add(e.name());
System.out.println("Inserted value: " + e.name());
}
您当前添加的是包含枚举的所有值的数组的String表示形式,而不是每个值的String表示形式。