泛型应用场景
A.泛型类
a.定义格式:
修饰符 class 类名称<泛型>{ }
b.使用格式:(创建对象)
类名称<具体类型> 对象名称 = new 类名称<具体类型>();
B.泛型方法
a.定义格式:
修饰符 <泛型> 返回值 方法名称 (参数){ 方法体; return 返回值; }
b.使用格式:(调用方法)
具体返回值类型 返回值 = 方法名称(具体参数);
C.泛型接口
a.定义格式:
修饰符 interface 接口名称<泛型>{ }
b.使用格式:(实现类或者创建实现类对象时候)
第一种:修饰符 class 类名称<具体类型> implements 接口名称{ }
第二种:类名称<具体类型> 对象名称 = new 类名称<具体类型>();
D.泛型通配符
a.含义:
不知道使用什么数据类型的时候,泛型可以使用 ?
b.格式:
Collection<?> 可以传递各种泛型类型的对象
例如: 这些都可以传递 Collection<Object> Collection<String> Collection<Integer>
c.高级使用: (Number是Integer的父类)
Collection<? extends Number> 只能接收 Number类型以及子类类型. (专业术语"泛型的上限")
Collection<? super Number> 只能接收 Number类型以及父类类型. (专业术语"泛型的下限")