所以我在JAVA中尝试做的是接受一组值,然后将这些值与Enum中相同类别的值进行比较,这样我就可以找到一个特定的枚举。
换句话说,我有一堆枚举
public enum Fruits{
APPLE("Red", "Round", "Fruit", true),
//about 20 or so more Constants
ORANGE("Orange","Sphere","Citrus", true);
private String color;
private String shape;
private String category;
private boolean edible;
private Fruits(String color, String shape, String category, boolean edible){
this.color = color;
this.shape = shape;
this.category = category;
this.edible = edible;
}
//getter methods for each variable
}
现在我有一个字符串数组
String[] myStringArray = {"Blue", "Oblong", "Berry"};
String[] myStringArrayTwo = {"Red", "Round", "Fruit"};
我如何将我的String Arrays与枚举中的String值进行比较,以便我可以找出哪个枚举常量我的String Array代表。
在Reality中,我有一个类,它将这些字符串值从文件读入数组,然后我想为类分配一个枚举,这样我就可以给它一个可以被其他类使用的预定义分类。
答案 0 :(得分:0)
(注意:构造函数不必是private
- 默认情况下是enums)
您可以在枚举中编写方法,例如:
public static findByCharacteristics(final String[] characteristics)
{
for (final Fruits candidate: values())
if (candidate.color.equals(characteristics[0])
&& candidate.shape.equals(characteristics[1])
&& candidate.category.equals(characteristics[2]))
return candidate:
return null;
}
然后你会:
final Fruits f = Fruits.findByCharacteristics(theArray);
// check whether f is null; if not, you have a match
然而,imho,代码“闻起来”;你应该尝试不同的方法。一种这样的“气味”是上述方法需要具有至少三个元素的阵列。