java - 将 3 个枚举泛化为一种类型

标签 java enums

我正在编写一个对文件进行一些计算的 Java 程序。 该程序支持 3 种类型的文件(文档、图像、视频),每种类型只允许几种格式:

enum DocType {
    pdf, doc, docx, xls, xlsx, ppt, pptx
}

enum ImageType {
    bmp, jpg, png, gif, ico
}

enum VideoType {
    avi, mpg, mp4, wmv, mov, flv, swf, mkv
}

在我的程序中,无论文件类型如何,我都希望保留文件扩展名,这意味着我希望能够执行以下任何任务:

FileType fileExt = DocType.doc
FileType fileExt = ImageType.jpg
FileType fileExt = VideoType.mp4

如何在 Java 中实现这种行为?我知道枚举不能扩展其他枚举,所以基本上优雅的解决方案是不可能的。

谢谢

最佳答案

您可以声明一个管理它们的接口(interface)

interface FileType{
}

enum DocType implements FileType{
 PDF // yes, uppercase for constants
 ...
}

enum ImageType implements FileType{
 ....
}

然后你可以声明FileType

类型的变量
FileType file = DocType.PDF;

关于java - 将 3 个枚举泛化为一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34675961/

相关文章:

java - 在 onDraw() 中保存 Canvas;

c++ - 如何将无符号整数分配给 C++ 中的枚举?

c# - 为什么我不能在变量和枚举之间进行比较(C#)

java - 可以合并 Java 枚举(如 C# 中的按位)吗?

sorting - Kotlin 密封类 - 如何按密封类排序,类似于按枚举排序

java - 手持手机可以模拟的最大 g 力值是多少?

java - 使用eclipse调试maven项目

java - 使用 Java 生成所需范围内的随机数

c# - 在 [Authorize(Roles)] 上使用枚举 [Flags] 和按位运算符

java - 将两个 List<Integer> 的每个元素求和到一个新列表中