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

Java在同一个名称下使用两个不同的枚举类:可能吗?,java,interface,enums,extends,Java,Interface,Enums,Extends,首先,我有一个“全局”解决方案:重写代码。这个问题是有背景的 我有几个实用程序类使用如下枚举类型: for (NamedConfigEnum config : NamedConfigEnum.values()) 可能还有其他特定于枚举类的方法 其中类只是一个枚举: public enum NamedConfigEnum{...} 当然,进口的是: import package.NamedConfigEnum; 现在我想定义第二个“完全等效”的枚举类型,它确实具有测试环境的值。也就是说,一个

首先,我有一个“全局”解决方案:重写代码。这个问题是有背景的

我有几个实用程序类使用如下枚举类型:

for (NamedConfigEnum config : NamedConfigEnum.values())
可能还有其他特定于枚举类的方法

其中类只是一个枚举:

public enum NamedConfigEnum{...}
当然,进口的是:

import package.NamedConfigEnum;
现在我想定义第二个“完全等效”的枚举类型,它确实具有测试环境的值。也就是说,一个枚举应用于测试,一个枚举应用于开发

我的任务是在不更改实用程序类的情况下使用一个枚举或另一个枚举,并且约束它们都应该编译。我使用的是maven,但我无法真正建立一些概要文件依赖关系,因为我仍然希望在开发过程中使用“测试枚举”运行测试

我搜索了枚举实例化、子类化、接口等所有内容,但找不到真正的解决方案

通过“接口”类,编译器似乎失去了对特定枚举方法的跟踪。。就像.values()一样

需要明确的是,我的约束条件是实用程序类和枚举类(内容),但没有任何东西禁止我重命名枚举并创建一个接口,例如:

public interface NamedConfigEnum{...}
这是“可能的”,但这根本不起作用

我认为问题可能是一般性的,即重用一些库和代码。特别是,它建议在java中使用EMUN时要非常小心,它们似乎是非常特殊的对象(如果有对象;)

老实说,我有点绝望,但至少我希望得到这样的答案:这是java中的一个已知问题;)

根据要求,我会列出一长串类似/相关的问题,但你可以用谷歌搜索

我发现的主要问题是:

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

谢谢!
F

经典XY问题。不要编写特殊的测试代码。测试真正的代码。否则你必须测试特殊的测试代码,…是的,这绝对是一个XY问题。退一步:为什么这首先是一个枚举?你为什么要打开它?为什么测试需要不同的枚举值?更有可能的是,你的设计在早些时候出了差错,现在你把自己逼到了一个角落——而不是寻找这个特定问题的答案(考虑到你概述的限制,这个问题基本上无法解决),帮助我们帮助你找到真正问题的解决方案。是的。。而不是;)正如我提到的,我有一个“解决方案”,即按照您的建议重写完整的代码。但我的问题就在这里,也就是说,我不想重写代码,因为目前它是一个“外部”库。当然,我正在考虑重新构建整个系统。关于测试,当然会有应用程序的测试。但在这种特殊情况下,我还想建立一个额外的测试套件,它将测试库的所有功能,即使它们尚未在我的应用程序中使用。换句话说,这应该让开发人员知道库正在工作,他们可以在不久的将来使用特定版本中的所有特性。前面有点测试…也许我可以补充完整的故事。哪个是git: