java generic type `<E extends Enum<E>>`

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

Enum source in <E extends Enum<E>>a generic format means:
This class can be subclassed instantiated subclass inherits its methods is the types Eis Enuma subclass of the class. compareToThe method parameter is the type E, both subclasses.

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);
    }
}

Using enumkeywords is equivalent to creating a DAYclass, and the DAYclass inherits the Enum
compiler compilation results are as follows:

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);
    }
}

The DAYclass inherits all Enum<DAY>methods such as compareTomethods, and compareTomethods need to be used DAYas parameters, so Enumthe Etype parameters are used.

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

Guess you like

Origin blog.csdn.net/claroja/article/details/114154507