我是JAVA的新手
我只需知道myEnum.values()
实现特定的myEnum
,就必须遍历interface
假设我有接口statsInterface
我有很少的枚举实现这个接口
enum statsfromMachine1
enum statsfromMachine2
..
后来我想迭代。 我在想什么就像是
public void interfaceEnumImplParser (statsInterface _interface ,object _myinterfaceImplEnum, string Input) {
for ((_interface)_myinterfaceImplEnum iterable_element : _myinterfaceImplEnum.values()) {
//do stuff here
}
}
但我在这里遗漏了一些东西,它甚至都不会编译 有可能吗?
答案 0 :(得分:1)
看起来您希望在迭代中直接将enum
强制转换为接口类型。如果这是真的那么你应该修改你的代码。
public void interfaceEnumImplParser (statsInterface _interface ,object _myinterfaceImplEnum, string Input) {
for (_interface iterable_element : _myinterfaceImplEnum.values()) {
//do stuff here
}
}
希望有所帮助。
答案 1 :(得分:1)
我写了一个小样本,可以帮助您找到多个枚举的通用实现逻辑。
interface Doable<B>{
B doStuff(Number a);
String getCategory()
}
enum StatsFromMachine1 implements Doable<String> {
ABC{
@Override
public String doStuff(Number a) {
return Integer.toString(a.intValue() + 3);
}
};
@Override
public String getCategory() {
return "S1";
}
}
enum StatsFromMachine2 implements Doable<String>{
X(1.4), Y(2.86), Z(0.1);
private Double d;
@Override
public String doStuff(Number x) {
return Double.toString(x.doubleValue() * this.d);
}
private StatsFromMachine2(Double d) {
this.d = d;
}
@Override
public String getCategory() {
return "S2";
}
}
当枚举实现相同的接口时,很容易编写适用于所有接口的代码。实际上,这种抽象并不关心,实现是由枚举还是其他东西给出的。
public static String doStuffWithEnums(){
Collection<Doable<String>> collection = Arrays.asList(StatsFromMachine1.values());
collection.addAll(Arrays.asList(StatsFromMachine2.values()));
StringBuilder sb = new StringBuilder();
for(Doable<String> d : collection){
sb.append(d.doStuff(5.0));
if(d.getCategory().equals("S1")){ // alternatively use an instanceOf check
sb.append(((StatsFromMachine1)d).name());
}
}
return sb.toString();
}
答案 2 :(得分:1)
好的,我已经弄清楚了
感谢您的帮助,我会在审核您的内容后获得+1
所以我基本上enum E1
实施了interface I1
迭代enum
成员&#34;一般&#34;我做的是:
public static void parse_log_with_enum(I1 ... Is)
{
for (I1 i1 : Is) {
// do something with i1
}
}