19.5 实现,而非继承

  • 每个enum类都继承了Enum类,因此无法再继承别的类,要扩展enum类可通过实现接口的方式;
  • 如果enum类实现了某个接口,则认为每个enum实例实现了该接口,即每个enum实例是该接口的实现;
  • enum实例有点普通类new出来的对象的意思,就是省去new了,而且对象的个数是确定的,就是enum实例的个数;
package chapter19._5;

import chapter15._3.coffee.Generator;

import java.util.Random;

enum CartoonCharacter implements Generator<CartoonCharacter> {
    SLAPPY, SPANKY, PUNCHY, SILLY, BOUNCY, NUTTY, BOB;

    private Random rand = new Random(47);

    @Override
    public CartoonCharacter next() {
        return values()[rand.nextInt(values().length)];
    }
}

public class EnumImplementation {

    public static <T> void printNext(Generator<T> rg) {
        System.out.println(rg.next());
    }

    public static void main(String[] args) {
        CartoonCharacter cc = CartoonCharacter.BOB;
        for (int i = 0; i < 10; i++) {
            printNext(cc);
        }
    }

}

输出:

BOB
PUNCHY
BOB
SPANKY
NUTTY
PUNCHY
SLAPPY
NUTTY
NUTTY
SLAPPY

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。