Java使用同名的两个不同的枚举类:可能吗?

时间:2015-02-01 03:15:02

标签: java interface enums extends

首先,我确实有一个“全局”解决方案:重写代码。问题在于背景。

我有几个实用程序类使用这样的枚举类型:

for (NamedConfigEnum config : NamedConfigEnum.values())

可能还有其他枚举类特定的方法。

这个班级只是一个枚举:

public enum NamedConfigEnum{...}

当然导入为:

import package.NamedConfigEnum;

现在我想定义第二个“完全等价”的枚举类型,它确实具有测试环境的值。即一个枚举应该用于测试,一个枚举应该用于开发。

我的任务是在不更改实用程序类的情况下使用一个枚举或另一个枚举,并使用它们都应编译的约束。我正在使用maven,但我无法真正做出一些配置文件依赖,因为我仍然想要测试,而在开发中,使用“test enum”运行。

我从enum实例化,子类化,接口搜索了所有内容,但我找不到真正的解决方案。

通过“接口”类,编译器似乎忽略了特定的枚举方法......就像确实.values()。

为了清楚起见,我所拥有的约束是在实用程序类和枚举类(内容)上,但没有禁止重命名枚举并创建例如以下接口:

public interface NamedConfigEnum{...}

这将是“可能的”,但这根本不起作用。

我认为这个问题可能很普遍,即重用一些库和代码。特别是在java中使用emuns时会建议非常小心,看起来它们是非常特殊的对象(如果在所有对象中)。)。

老实说,我有点无望,但至少想要一个答案:这是java中的一个已知问题;)

根据要求,我会把很长的stackoverflow列表列出类似/相关的问题,但你可以直接谷歌。

我发现的主要问题是:

  • 所有枚举都隐式扩展了java.lang.Enum。由于Java不支持多重继承,因此枚举不能扩展其他任何内容。
  • 请注意,此接口无法进行切换。 (或者通常有一个带有一个可能来自多个枚举的对象的开关)。 [我的:然后甚至迭代价值观?]

这两个是主要的,这使我的任何尝试失败。

谢谢! ˚F

0 个答案:

没有答案
相关问题