枚举

  • 枚举介绍
  • 操作枚举类型成员的方法
  • 枚举类型中的构造方法
  • 枚举总结
  • 泛型介绍
  • 向上转型
  • 定义泛型类
  • 泛型类声名多个类型
  • 泛型类声名数组类型
  • 泛型类高级用法
  • 限制泛型可用类型
  • 使用类型通配符
  • 继承泛型类与实现泛型接口
  • 泛型总结


枚举介绍

继承java.lang.Enum
枚举类型可以取代常量的定义方式,即将常量封装在类或接口中。本质上还是类的形式。

  1. 单独定义枚举

    使用方法: 枚举名.常量名
Constants.Constants_A;
  1. 类中定义枚举

    这种内部类的形式,编译改类时,除了ConstantsTest.class类之外,还存在ConstantsTest $ 1.class和ConstantsTest $ Constants2.class 文件。

操作枚举类型成员的方法

每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员都默认修饰为public、static、final

2. values()方法、valueOf()方法和compareTo()方法。

java枚举使用泛型遍历 java枚举支持泛型_枚举类型


2. ordinal()方法。

java枚举使用泛型遍历 java枚举支持泛型_枚举类型_02

枚举类型中的构造方法

枚举类型中,可以添加构造方法,但是这个构造方法必须为private修饰,防止客户代码实例化一个枚举对象。

java枚举使用泛型遍历 java枚举支持泛型_java枚举使用泛型遍历_03


java枚举使用泛型遍历 java枚举支持泛型_枚举类型_04


注意: 枚举成员和构造方法有顺序的。

上述代码getDescription()、getI()方法重复,可以定义一个接口

java枚举使用泛型遍历 java枚举支持泛型_泛型_05

枚举总结
  1. 类型安全
  2. 运行效率高
  3. 完美交互

@syl 2021/04/26 0:38 未知




泛型

  • 枚举介绍
  • 操作枚举类型成员的方法
  • 枚举类型中的构造方法
  • 枚举总结
  • 泛型介绍
    • 向上转型
  • 定义泛型类
    • 泛型类声名多个类型
    • 泛型类声名数组类型
  • 泛型类高级用法
    • 限制泛型可用类型
    • 使用类型通配符
    • 继承泛型类与实现泛型接口
  • 泛型总结




泛型介绍
定义安全的类型,传参是也限制必须为某个类型的变量。

向上转型

java枚举使用泛型遍历 java枚举支持泛型_泛型_06

定义泛型类
语法:类型< T >

java枚举使用泛型遍历 java枚举支持泛型_枚举类型_07

泛型类声名多个类型

定义泛型类时,可以声名多个类型

MutiOverClass<T1,T2>
	//MutiOverClass:泛型类名称
	//这样实例化就可以定义多个类型
	MutiOverClass<Boolean,Float> new MutiOverClass<Boolean,Float>;

泛型类声名数组类型

java枚举使用泛型遍历 java枚举支持泛型_枚举类型_08


注意: 不可以使用泛型来建立数组的实例。

public class Test<T>{
	//private T[] array = new T[10];//不能使用泛型来建立数组的实例。
}
泛型类高级用法

限制泛型可用类型

class 类名称<T extends anyClass>

使用泛型限制后,泛型类的类型必须实现或继承了anyClass这个类或接口。

java枚举使用泛型遍历 java枚举支持泛型_java枚举使用泛型遍历_09

使用类型通配符

泛型类名称<? extends List> a = null;
List<String> l1 = new ArrayList<String>();
l1.add("A");	//在集合类添加内容
l1.set(0,"B");	//可以在集合类改变内容
List<?> l2 =l1;
l2.add("C");	//可以在集合类添加内容
//l2.set(0,"D");//使用?通配符不可以改变集合类的内容
List<?> l3 = new LinkedList<Integer>();

继承泛型类与实现泛型接口

java枚举使用泛型遍历 java枚举支持泛型_枚举类型_10


java枚举使用泛型遍历 java枚举支持泛型_泛型类_11


SubClass类继承ExtendClass类时保留父类的泛型类型,需要在继承时指明,如果没有指明,直接使用extends ExtendClass语句进行继承操作,则SubClass类中的T1,T2,T3都会自动变为Object,一般情况下都将父类的泛型类型保留

泛型总结
  1. 泛型的类型参数只能是类类型,不可以是简单类型。
  2. 泛型的类型个数可以是多个。
  3. 可以使用extends关键字限制泛型的类型。
  4. 可以使用通配符限制泛型的类型。
    @syl 2021/04/26 15:37 阴 小雨