【发布时间】:2017-09-21 13:05:09
【问题描述】:
我试图通过迭代枚举的所有常量来概括一些代码,以从每个常量接收相同的特定参数。
具体来说,我有一个枚举 P 和一些常量 A,B,C。
这些常量中的每一个本身都是一个枚举,并实现了一个接口 I,该接口定义了一个函数 f。
P.values() 给了我一个数组 P[] A = {A,B,C},但是我不能调用 A[i].f(),因为 A[i ] 当然是 P 类型,它不实现 I。
现在在我的理解中,一个函数可以返回一个接口,但我不能实例化它,因此不能转换为它。
我应该为 P 覆盖 values() 以返回 I[] 吗?如果是这样,由于我无法投射到 I,我该怎么做?还是有其他解决方案?
我在 eclipse 中工作,但假设它的抱怨表明了一个真正的错误,而不仅仅是 eclipse 不识别类型。
由于我对 Java 有点陌生,因此我也很感谢任何解释类型匹配/检查的基本规则的资源链接。
【问题讨论】:
-
分享你的代码
-
我想我错过了一些东西。你的
enum是否实现了相关接口?如果是这样,您应该可以直接调用函数f。如果没有,也许enum应该实现I。 -
每个枚举常量都应该实现相同的接口
I?enum P implements I { A(fa), B(fb), C(fc); public final F f; P(F f) { this.f = f; } ...}
标签: java enums interface casting iteration