java 泛型 `<E extends Enum<E>>`

public abstract class Enum<E extends Enum<E>>{
	public final int compareTo( E o) { ... }
}

Enum的源码中<E extends Enum<E>>这种格式的泛型是指:
该类只能被子类实例化,子类会继承其方法.就是类型EEnum的子类.而该类的compareTo方法参数就是类型E,既子类.

package com;

enum DAY { MON, TUE, WED, THU, FRI, SAT, SUN }

public class App2 {
    public static void main(String[] args) {
        DAY day = DAY.MON;
        System.out.println(day);
    }
}

使用enum关键字相当于创建了DAY类,并且DAY类继承了Enum
编译器编译结果如下:

enum DAY { MON, TUE, WED, THU, FRI, SAT, SUN }

public final class DAY extends Enum<DAY> {
    public static final DAY MON;
    ...
    static {
        MON = new DAY("MON", 0);
    }
}

DAY类继承所有Enum<DAY>的方法比如compareTo方法,而compareTo方法需要用DAY作为参数,因此用了EnumE类型形参.

参考:
http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ106

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值