我有这些枚举:
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();
}
