获取一组值并将它们与java中的Enum值进行比较

时间:2014-10-16 00:13:28

标签: java string enums

所以我在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中,我有一个类,它将这些字符串值从文件读入数组,然后我想为类分配一个枚举,这样我就可以给它一个可以被其他类使用的预定义分类。

1 个答案:

答案 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,代码“闻起来”;你应该尝试不同的方法。一种这样的“气味”是上述方法需要具有至少三个元素的阵列。