Skip to main content
 首页 » 编程设计

java中在java中加入枚举

2025年02月15日31www_RR

我有这些枚举:

public interface MyEnum { 
} 
 
public enum Foo implements MyEnum{ 
    A("Foo_a"), 
    B("Foo_b"), 
    C("Foo_c") 
 
    private String name = ""; 
    Foo(String name) { 
        this.name = name; 
    } 
    @Override 
    public String toString() { 
        return name; 
    } 
} 
 
public enum Bar implements MyEnum { 
    A("Bar_a"), 
    B("Bar_b"), 
    C("Bar_c") 
    private String name = ""; 
    Bar(String name) { 
        this.name = name; 
    } 
    @Override 
    public String toString() { 
        return name; 
    } 
} 

我必须使用一种方法来加入我的枚举,如下所示:

join(Foo, A, B) 

或者其他方式(更好):

Foo.join(A, B) 

返回:

"Foo_a, Foo_b" 

我尝试过这个:

static String join(MyEnum table, Object ... words) { 
    String joined = words[0].toString(); 
    for(int i = 1 ; i<words.length ; i++) { 
        for(MyEnum.class t : MyEnum.values()) { 
            if (t == words[i]) { 
                joined += ", " + words[i].toString(); 
            } 
        }    
    } 
    return joined; 
} 

但似乎我无法执行for(MyEnum.class t : MyEnum.values())

你有想法实现这个方法吗?

请您参考如下方法:

您没有在方法中的任何地方使用参数table,因此不需要传递它。另外,为什么要尝试循环 MyEnum 的枚举值(这不起作用,因为接口(interface) MyEnum 没有 values()方法)?您也可以循环遍历 words 数组。

这个简单的版本适用于任何类型的对象,包括您的枚举值:

static String join(Object... words) { 
    StringBuilder sb = new StringBuilder(); 
 
    if (words.length > 0) { 
        sb.append(words[0]); 
        for (int i = 1; i < words.length; i++) { 
            sb.append(", ").append(words[i].toString()); 
        } 
    } 
 
    return sb.toString(); 
}