文章目录
- 前言
- 1. 为什么使用泛型类?
- 2. 泛型类介绍
- 总结
前言
本篇通过介绍为什么使用泛型类,什么是泛型类,进一步为以后数据结构的学习打下基础。如有错误,请在评论区指正,让我们一起交流,共同进步!
本文开始
1. 为什么使用泛型类?
泛型类:通过泛型类我们可以指定我们所需要的类型,方便我们使用.
当我们想要定义一个类,类中存在一个数组,想在数组中存取任意元素,我们应该想到什么呢?
会想到Object类,它是所有类的父类,我们能根据object任意存储,但是我们获取元素,去使用该元素时又出现困难,我们存储了各种类型(double,string,int…),例如我们想要计算加减等操作,面对大量存储的元素,我们不可能记忆每个元素的类型,想要强制转换这种想法也失败了,这就是为什么我们使用泛型类。
错误思想代码演示:
class Array {
public Object[] obj = new Object[3];
//获取pos位置的值返回
public Object getObj(int pos) {
return obj[pos];
}
//对obj数组进行赋值
public void set(int pos,Object val) {
obj[pos] = val;
}
}
public class Test {
public static void main(String[] args) {
Array array = new Array();
array.set(0,1);
array.set(1,"aa");
array.set(2,1.0);
System.out.println(array.getObj(0));
System.out.println(array.getObj(1));
System.out.println(array.getObj(2));
System.out.println("======================");
//计算是需要强制,但对于大量数据会失败,不会记忆取到的数据类型是什么,无法完成强制类型转换
int ret = (Integer) array.getObj(0) + 2;
System.out.println(ret);
}
}
下面会写正确的泛型类代码!
2. 泛型类介绍
泛型类: 将 类型 作为参数传递给类。使之能够指定我们所需要的类型,方便我们设置参数等操作。
1.语法:类名后加<>,表示该类为泛型类;
①<>括号中存放的是我们想要使用的类型,如果想设置为String,写成 < Sting >即可;
②<>括号中可以存放一个或多个类型,可以使用大写字母E,O,P,T,K,Y等
③<>括号中必须存放引用类型,不可以是基本数据类型
//<>中1个泛型
class Array<E> {
public Object[] obj = new Object[3];
...
}
//<>中多个泛型
class Array<E,T,O> {
...
}
2.泛型类的特点
①能够检查我们 传递类型是否准确;例如:我们设置为< Integer >,就不能设置字符串类型,浮点数类型等
②当我们获取值时,泛型类会自动转换为我们所需要的类型,设置类型为< String >,在介绍参数时直接用String字符类型接收就可以了。
泛型类代码:
class Array<E> {
public Object[] obj = new Object[3];
//获取pos位置的值返回
public E getObj(int pos) {
//数组是Object类型需要返回E类型需要强制转换
return (E)obj[pos];
}
//对obj数组进行赋值
public void set(int pos,E val) {
obj[pos] = val;
}
}
public class Test {
public static void main(String[] args) {
//<>括号中设置为什么类型,数组中就可以设置为什么类型
Array<Integer> array = new Array<>();//整形
array.set(0,1);
array.set(1,2);
System.out.println(array.getObj(0));
System.out.println(array.getObj(1));
System.out.println("======================");
Array<String> array2 = new Array<>();//字符串类型
array2.set(0,"aa");
array2.set(1,"bb");
System.out.println(array2.getObj(0));
System.out.println(array2.getObj(1));
}
}
代码结果:
总结
✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!