JAVA高级
重点
一.枚举
二. 泛型
知识点
一.枚举
定义枚举类的格式:
修饰符 enum 枚举名称{
第一行都是罗列枚举类实例的名称。
}
enum Season{
SPRING , SUMMER , AUTUMN , WINTER;
}
枚举的特征:
枚举类都是继承了枚举类型:java.lang.Enum
枚举都是最终类,不可以被继承。
构造器都是私有的,枚举对外不能创建对象。
枚举类的第一行默认都是罗列枚举对象的名称的。
枚举类相当于是多例模式。
选择常量做信息标志和分类:
虽然可以实现可读性,但是入参值不受约束,代码相对不够严谨。
枚举做信息标志和分类:
代码可读性好,入参约束严谨,代码优雅,是最好的信息分类技术!建议使用!
二.泛型概述
泛型概述:
是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。
泛型的格式:<数据类型>; 注意:泛型只能支持引用数据类型。
集合体系的全部接口和实现类都是支持泛型的使用的。
泛型的好处:
统一数据类型。
把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为编译阶段类型就能确定下来。泛型类的概述
1.泛型类
泛型类的概述:
定义类时同时定义了泛型的类就是泛型类。
泛型类的格式:修饰符 class 类名<泛型变量>{ }
范例:public class MyArrayList<T> { }
此处泛型变量T可以随便写为任意标识,常见的如E、T、K、V等
作用:编译阶段可以指定数据类型,类似于集合的作用
泛型类的原理:
把出现泛型变量的地方全部替换成传输的真实数据类型
2. 泛型方法
泛型定义在方法的修饰符和返回值类型之间
格式: 修饰符<泛型> 返回值类型 方法名(参数列表(使用泛型)) { 方法体; }
含有泛型的方法,在调用方法的时候确定泛型的数据类型
传递什么数据类型的参数,泛型就是什么类型
3. 泛型接口
含有泛型的接口,第一种使用方式: 定义接口的实现类,实现接口,
指定接口的泛型
public interface Iterator<E> {
E next();
}
Scanner类实现了Iterator接口,并指定接口的泛型为String,
所以重写的next方法泛型默认为
String public final Scanner implements Iterator<String> {
public String next(){}
}
含有泛型的接口第二种使用方式:
接口使用什么泛型,实现类就使用什么泛型,类跟着接口走
就相当于定义了一个含有泛型的类,
创建对象的时候确定泛型的类型
public interface List<E> {
boolean add(E e); E get(int index);
}
public class ArrayList<E> implements List<E> {
public boolean add(E e) {}
public E get(int index) {}
}
通配符:
当使用泛型类或者接口时,
传递的数据中,泛型类型不确定,可以通过通配符<?>表示。
但是一 旦使用泛型的通配符之后,只能使用Object类中的共性方法,
集合中元素自身方法无法使用。
通配符基本使用 泛型的通配符:
不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符,代表 任意的数据类型 此时只能接收数据
,不能往集合中存储数据 使用方式 不能创建对象使用只能作为方法的参数使用
原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/278287.html