public interface Food {
enum Appetizer implements Food {
SALAD, SOUP, SPRING_ROLLS;
}
enum mainCourse implements Food {
LASAGNE, BURRITO, PAD_THAT, LENTILS, HUMMOUS, VINDALOO;
}
enum Dessert implements Food {
TIRAMISU, GELATO, BLACK_FOREST_CAKE, FRUIT, CREAM_CARAMEL;
}
enum Coffee implements Food {
BLACK_COFFEE, DECAF_COFFEE;
}
}
public enum Course {
APP(Food.Appetizer.class), MAIN(Food.mainCourse.class), DES(
Food.Dessert.class), COFF(Food.Coffee.class);
private Food[] values;
private Random rand = new Random();
private Course(Class<? extends Food> kind) {
values = kind.getEnumConstants();
}
public Food randomSelection() {
return values[rand.nextInt(values.length)];
}
}
public class Meal {
public static void main(String []args){
for(int i=0;i<5;i++){
for(Course course:Course.values()){
Food food =course.randomSelection();
System.out.println(food);
}
System.out.println("^^^^^^^^^^^^^^");
}
}
}
运行结果如下:
SPRING_ROLLS
PAD_THAT
BLACK_FOREST_CAKE
DECAF_COFFEE
^^^^^^^^^^^^^^
SPRING_ROLLS
BURRITO
BLACK_FOREST_CAKE
DECAF_COFFEE
^^^^^^^^^^^^^^
SPRING_ROLLS
BURRITO
CREAM_CARAMEL
DECAF_COFFEE
^^^^^^^^^^^^^^
SALAD
LASAGNE
BLACK_FOREST_CAKE
BLACK_COFFEE
^^^^^^^^^^^^^^
SALAD
BURRITO
BLACK_FOREST_CAKE
DECAF_COFFEE
^^^^^^^^^^^^^^
对于enum而言,实现接口是其子类化的唯一办法,如果Food中的每个enum都实现了接口,通过向上转型便可以得到所有的东西。
当需要与一大堆类型打交道时,创建枚举的枚举,就可以创建一个新的enum然后实例food的每一个类。
分享到:
相关推荐
通过这种方式,我们成功地在Unity中创建了一个多标签属性,用户可以在编辑器中自由选择枚举类型的一个、多个、所有或没有选项。这样的设计增强了游戏对象的灵活性,便于在不同场景下调整其状态和行为。
本文将探讨如何简洁高效地实现在多个枚举类型之间的自由转换。 首先,我们来看一个实际的例子。假设A同事和B同事各自定义了关于银行的枚举: ```csharp public enum BankEnum { ICBC = 1, CMSB = 2, CMBC = 3 }...
在"MultipleChoiceDialogExample"中,可能示例了如何在多选对话框中使用这种基于ENUM的SQLite框架,允许用户选择一个或多个状态,然后将这些选择保存到数据库中。这通常涉及到创建一个`AlertDialog`,提供一个列表供...
总的来说,VB.NET实现任意程序窗口化运行涉及到对Windows API的深入理解和熟练运用,通过这种方式,开发者可以更自由地控制程序的启动和显示,提升用户体验。在实际开发中,务必确保正确理解和使用API函数,遵循...
用户应能自由选择日志的输出目的地。 5. **性能优化**:为了不影响程序的正常运行,日志框架需要在处理大量日志时保持高效。 现在,我们来看看如何用Java实现这些核心功能: **1. 日志级别实现**: 创建一个枚举...
5. **颜色与线型**:`Color`类用于定义颜色,`BasicStroke`或`Stroke`接口定义线条样式,允许用户选择不同的颜色和线宽进行绘制。 6. **文件操作**:为了实现打开和保存功能,程序需要使用Java的`File`、`...
这样的功能增强了用户体验,使得用户可以根据自己的工作需求自由调整界面布局。下面将详细介绍如何实现WinForm窗体的浮动功能。 1. **窗体设计** - 首先,你需要创建一个WinForm窗体,设置其属性,如大小、背景色...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
在iOS应用开发中,主题切换是一项重要的功能,它允许用户根据个人喜好选择...通过这个项目,你可以了解到如何在iOS应用中实现简单而有效的本地主题切换,使用户能够在亮色和暗色主题之间自由切换,提升应用的用户体验。
此外,Swift 4.0对枚举(Enum)进行了强化,支持带有关联值的枚举和原始值,使得枚举在表示复杂数据结构时更为灵活。 其次,Swift 4.0对字符串处理进行了优化。字符串现在是不可变的,这意味着一旦创建,就不能改变...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
1. 练习模式:用户可以自由选择题目进行解答,系统实时反馈答案正误。 2. 测试模式:模拟真实的考试环境,限制答题时间,结束后一次性显示分数和解析。 五、持续更新与拓展 优秀的C语言测试系统还会不断更新题库,...
<ObjectDataProvider x:Key="keySex" MethodName="GetValues" ObjectType="{x:Type assembly:Enum}"> <x:Type Type="local:Sex" /> <!-- 引用后台的枚举类型 --> ``` 2. DataGrid 的增删改功能 DataGrid ...
在本项目中,用户可以在游戏运行时自由切换GDI+和DDraw,体验不同的视觉效果。 项目的源代码中包含以下几个关键文件: 1. `Tetris.cd` - 这可能是一个项目配置或资源文件,用于存储游戏的音乐、图像和其他资源。 2...