目录
Arrays工具类中的一个方法
泛型概述及使用
为什么会有泛型呢?
a.通过案例引入
b.早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题
泛型的语句定义格式
<引用数据类型> 括号中的数据类型只能是引用数据类型
例:创建一个List 集合对象
ArrayList<String> list = new ArrayList<>();
泛型为String,这样集合只能去添加String类型的元素。
泛型的好处
a.将运行时期出现的问题提前到编译时期
b.不需要做强制类型转换
c.优化了代码,减少出错的机会
泛型应用
泛型类
把泛型定义在类上
格式:public class 类名<泛型类型1,…>
注意:泛型类型必须是引用类型
//这里<>里面的内容仅仅表示使用的一种参数数据类型,参数类型使一种变量,可以使用任意符合标识符规则的名字 public class GenericTest2<A> { private A name; public void setName(A name) { this.name = name; } public A getName() { return name; } }
泛型方法
把泛型定义在方法上
格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
class Generic{ //泛型方法 public <B> void show(B b){ //B代表你传任意类型数据它就变成什么类型的数据 System.out.println(b); } } public class GenericTest3 { public static void main(String[] args) { //创建Generic类的对象 Generic generic = new Generic(); generic.show("sad23"); //可以传任意类型数据 generic.show(223); generic.show(2322.232); } }
泛型接口
把泛型定义在接口上
格式:public interface 接口名<泛型类型1…>
//泛型接口 interface Generic1<C>{ void show(C c); } //创建类实现接口 class Ter<C> implements Generic1<C>{ //重写接口的方法 @Override public void show(C c) { System.out.println(c); } } //测试 public class GenericTest4 { public static void main(String[] args) { //创建Ter类对象 Ter<String> s = new Ter<>(); s.show("sad"); } }
泛型高级(通配符)
1.泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的Java类了
//泛型通配符<?> 任意类型,如果没有明确,那么就是Object以及任意的Java类了 ArrayList<?> list1= new ArrayList<String>();