帮我了解泛型。说我有两个枚举作为内部类,如下所示:
public class FoodConstants {
public static enum Vegetable {
POTATO,BROCCOLI,SQUASH,CARROT;
}
public static enum Fruit {
APPLE,MANGO,BANANA,GUAVA;
}
}
我不想让两个枚举都实现一个接口,而不得不两次实现相同的方法,而是希望在外部类中有一个方法可以执行以下操作:
public <e> String getEnumString<Enum<?> e, String s) {
for(Enum en: e.values()) {
if(en.name().equalsIgnoreCase(s)) {
return s;
}
}
return null;
}
但是,此方法无法编译。我要尝试做的是找出字符串值是否为枚举值的名称(在任何枚举中),无论是蔬菜,水果,还是其他。不管这实际上是否是冗余方法,我尝试(重新)编写的方法有什么问题?
基本上我想这样做:
public class FoodConstants {
public static enum Vegetable {
POTATO,BROCCOLI,SQUASH,CARROT;
}
public static enum Fruit {
APPLE,MANGO,BANANA,GUAVA;
}
public <e> String getEnumString<Enum<?> e, String s) {
for(Enum en: e.values()) {
if(en.name().equalsIgnoreCase(s)) {
return s;
}
}
return null;
}
} //end of code
public static <E extends Enum<E>>
String getEnumString(Class<E> clazz, String s){
for(E en : EnumSet.allOf(clazz)){
if(en.name().equalsIgnoreCase(s)){
return en.name();
}
}
return null;
}
原来有几个问题:
Enum.valueOf(String)
。EnumSet
为您完成所有反光材料。问题内容: 我想声明一个枚举Direction,它具有一个返回相反方向的方法(以下语法不正确,即,不能实例化枚举,但它说明了我的观点)。这在Java中可行吗? 这是代码: 问题答案: 对于那些按标题吸引的人:是的,您可以在枚举中定义自己的方法。如果您想知道如何调用这种非静态方法,则可以使用与其他任何非静态方法相同的方法- 在定义或继承该方法的类型实例上调用它。如果是枚举,则此类实例仅为s。 因此,
问题内容: 我有几个使用下划线分隔单词的Java枚举。在我的每个枚举中,我都有一个toString方法,该方法实现为super.toString()。replace(“ _”,“”),这样我就可以在GUI上显示String值而没有下划线。有什么办法可以让我的所有枚举都使用此toString方法,而不必在所有这些枚举之间重复?如果这是一个常规类,答案很简单,实现toString()然后让我所有需要该
主要内容:声明枚举,枚举类,为枚举添加方法,EnumMap 与 EnumSet枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。 在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 Java 枚举类型 enum 可以更贴近地表示这种常量。 声明枚举 声明枚举时必须使用 enu
枚举具有名为'hash value'的属性,该属性是枚举内的索引。
问题内容: 因此,我对Java枚举中是否可以包含函数感到困惑。我正在制作一个简单的html编辑器,并希望使用枚举来表示html标签,是的,我知道这不是解决问题的最佳方法,而是我小组决定实现它的方法。 所以我一直在尝试做这样的事情,但是当我试图称其为静态方法时,我想我想知道这是否正确,或者是否有更好的方法来实现它而不是公开成为 问题答案: 是的,Java枚举可以具有功能。 http://docs.o
我试图构建一个通用方法,它将作为参数并处理一些信息。 但不幸的是,它不能像我希望的那样工作。也许你有一些建议来改进我的代码并防止错误。 我在调用: 无法在 我在和调用: 无法解析方法 无法解析方法 我需要在方法中使用的枚举都具有相同的结构。 例如,其中一个看起来像这样: 我知道我可以通过使用 但我的方法不会是通用的。我想对我的任何枚举使用此方法。