本文已参与「新人创作礼」活动,一起开启掘金创作之路
Java枚举和泛型学习总结
枚举和泛型
常量的常规定义方式: 将常量封装在类或接口中
枚举类型
本质上以类的形式存在,且提供检查功能,取代了常量的常规定义方式,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例,每个枚举类型成员被final,static,public所修饰,所以当使用时直接使用枚举类型名称调用即可。 1.使用枚举类型定义常量 enum是定义枚举类型的关键字
public enum nums{
num_1,
num_2,
}
枚举的使用
enum nums{
num1,
num2,
num3,
}
public class enum_text {
public static void num_use(nums n){
switch (n) {
case num1:
System.out.println("this is num1");break;
case num2:
System.out.println("this is num2");break;
case num3:
System.out.println("this is num3");break;
}
}
public static void main(String[] args) {
num_use(nums.num2);
}
}
程序展示:
2.枚举类型常用方法
| 方法 | 具体含义 | 使用方法 |
|---|---|---|
| values() | 该方法可以将枚举类型成员以数组的形式返回 | 枚举类型名称.values() |
| valueOf() | 该方法可以将普通字符串转换为枚举类型 | 枚举类型名称.valueOf() |
| compareTo() | 该方法可以比较两个枚举对象在定义时的顺序 | 枚举对象.compareTo() |
| ordinal() | 该方法用于得到枚举成员的位置索引 | 枚举对象.ordinal() |
3.枚举类型的优势
- 类型安全
- 紧凑有效的数据定义
- 可以和程序其他部分完美交互
- 运行效率高
泛型
实质上就是使程序员定义安全的类型,即可以在程序中随意改变数据类型 1.定义泛型 语法:
类名<泛型的名称>
2.定义泛型同时声明多个类型
class MyClass<T1,T2>{}
:
:
MyClass<Double,String> = new MyClass<Double,String>();
3.定义泛型数组
public class array_T <T>{
private T[] array;
private T[] getArray()
{
return array;
}
public void setArray(T[] array){
this.array = array;
}
public static void main(String[] args) {
array_T<String> T_use = new array_T<>();
String value[] = {"n1","n2","n3"};
T_use.setArray(value);
String array[] = T_use.getArray();
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
}
}
程序展示:
4.常用的被泛型化的集合类
| 集合类 | 泛型定义 |
|---|---|
| ArrayList | ArrayList< T > |
| HashMap | HashMap< T,E > |
| HashSet | HashSet< T > |
5.限制泛型可用类型 语法:
class 类名称<T extends 某个类或接口>
6.使用类型通配符 作用: 在创建一个泛型类对象时限制这个泛型类的类型实现或继承某个接口或类的子类 声明这样一个对象需要使用 ? 通配符 使用extends来对泛型加以限制 语法:
泛型类名称<? extends List> a = null;
< ? extends List >表示类型未知,可以单独实例化:
A<? extends List> a = null;
a = new A<ArrayList>();
a = new A<LinkedList>();
泛型总结
- 泛型的类型参数只能是类类型,不能是简单类型
- 泛型的类型个数可以是多个
- 可以使用extends关键字限制泛型的类型
- 可以使用通配符限制泛型的类型