我试图具有延伸的通用接口枚举的集合,所以像:Enum <?扩展接口>
interface Fooable
{
void someCommonMethod();
}
enum E1 implements Fooable
{
// some enumuerations and a definition for someCommonMethod()
}
enum E2 implements Fooable
{
// some different enumerations and a different definition for someCommonMethod()
}
,然后利用这个别处通过强制执行这两个,一个变量是一个枚举和实现接口。因此沿线的东西..
bar(Enum<? extends Fooable> fe)
{
fe.ordinal();
fe.someCommonMethod();
}
然而,到目前为止,我似乎有投FE为了把它当作实现接口,即
bar(Enum<? extends Fooable> fe)
{
fe.ordinal();
((Fooable)fe).someCommonMethod();
}
,虽然这应该是安全......这似乎并不理想,我可能会忽视某些事情。当然,如果我尝试将参数作为Fooable传递,那么我会抛出它将其视为Enum,不仅如此,我现在还不安全。如下图:
bar(Fooable fe)
{
// potentially unsafe cast!
((Enum<?>)fe).ordinal();
fe.someCommonMethod();
}
有什么我俯瞰或者是
Enum<? extends Fooable>
约接近一个“好”的解决方案,我会得到什么?
我对Java相对比较陌生,并且还在追赶自己,试图像C或C++一样使用它,所以如果我把它当作一把锤子而不是锯子或者忽略某种东西,可以随意指出它:)
我想过这件事,但我对它的行为有所保留,值(),可能值得重新审视,因为现在我无法疏通有效的保留... – Khanmots 2012-08-10 22:29:03
这需要一个不必要的接口。 – 2012-08-10 22:55:58
@Mike,我越想越想越是正确的道路。我的要求并不是真的,类型**是一个枚举,而是它具有枚举的**行为**。我也相信自己价值()的东西不会是一个问题,并且我是愚蠢的。 – Khanmots 2012-08-10 22:59:02