Java枚举类型的小应用

生成课表

import java.util.Random;

interface ClassType{
    enum LIBERART implements ClassType{CHINESE, ENGLISH, HISTORY, GEOGRAPH}
    enum SCIENCE implements ClassType{MATH, PHYSICS, CHEMISTRY, BIOLOGY}
    enum MORAL implements ClassType{SPORT, MUSIC, PAINTING}
}
class Enums{
    private static Random rand=new Random(47);
    public static <T extends Enum<T>>T random(Class<T> ec){
        return random(ec.getEnumConstants());
    }
    public static <T>T random(T[] values){
        return values[rand.nextInt(values.length)];
    }
}
enum Course{
    LIBERART(ClassType.LIBERART.class),
    SCIENCE(ClassType.SCIENCE.class),
    MORAL(ClassType.MORAL.class);
    private ClassType[] values;
    private Course(Class<? extends ClassType>kind){
        values=kind.getEnumConstants();
    }
    public ClassType randomSelection(){
        return Enums.random(values);
    }
    
}
public class ClassTable {

public static void main(String[] args) {
        for(int i=1;i<6;i++){
            System.out.println("星期"+i+":");
            for(Course course:Course.values()){
                ClassType t=course.randomSelection();
                System.out.println(t);
            }
        }
    }
}

时间: 2024-08-10 19:19:18

Java枚举类型的小应用的相关文章

向Java枚举类型中添加新方法

除了不能继承enum之外,可将其看做一个常规类.甚至可以有main方法. 注意:必须先定义enum实例,实例的最后有一个分号. 下面是一个例子:返回对实例自身的描述,而非默认的toString返回枚举实例的名字. public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String nam

java 枚举类型分析

最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, BLUE_BAGE; } 编译不过. 我将赋值语句修改了以后,如下所示: public enum ColorSelect { RED_BAGE , GREEN_BAGE, BLUE_BAGE; } 编译通过.说明C++那样的赋值方法不适用java.所以,我需要弄清楚的是: 1. 在java平台上,如

【转】掌握java枚举类型(enum type)

原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天. Java代码   public class Season { public static final int SPRING = 1; public static final int 

【转】java枚举类型enum的使用

原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义.既然不明白就抽时间研究下吧. Java 中的枚举

java 枚举类型enum 的使用

java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义.既然不明白就抽时间研究下吧. Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型.要了解枚举类型,建议大家先

【转载】Java枚举类型的使用

枚举类型概念 [java] view plain copy package com.lxq.enumm; public class EnumDemoOne { private enum InnerEnum { RED, GREEN, YELLOW }; public static void main(String[] args) { System.out.println(InnerEnum.RED); System.out.println(InnerEnum.GREEN); System.out

Java枚举类型的用法

JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 1.用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法.而且枚举类型可以帮助我们检测许多的编译失误. 例如: package enumTest; public enum Color { RED,BLANK,YELLOW } 测试代码: package

java枚举类型

jvm并不支持枚举类型,java中枚举类型是在编译器层面上实现的,先看如下代码: package demo.nio; public class EnumDemo { public static enum Color{ Red(20), Green(10), Blue(30); Color(int v){ this.value = v; } private int value; public int getValue(){ return this.value; } } public static

java枚举类型详解

枚举类型是JDK1.5的新特性.显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类.而这些类都是类库中Enum类的子类(java.lang.Enum<E>).它们继承了这个Enum中的许多有用的方法. 示例: 1 public enum Color { 2 3 RED("红色"),BLUE("蓝色"),WHITE("白色"),BLACK("黑色"),YELLO("黄色")