JDK 1.5 中出现了泛化的类型的概念:
--泛型:表示泛化的类型
泛化--泛指一些后面加上类型;我们开始使用--
实例:
我们开始使用的瓶子,但是生产厂家却不知道他们的用处是什么,比如我想要啤酒瓶,
厂家生产的瓶子--缺少一个具体的标签是对比与商品的,不确定里面装的是什么东西,容器里面存储的东西,但是东西却不知道具体是什么
2.联系到 JAVAJDK 的集合类型,我们可以建立很多的集合,但是具体使用的集合里面存的数据五花八门的--统一的 object,但是具体的八种类型却不得而知
我们从上述直接可以看出来,数据是直接可以遍历出来,但是要得到具体的属性
object-->String -->字符串的长度;
通过一个特定的标识-表示容器中存在数据的类型----泛型
泛型分为类型形参和类型实参
形参和实参-----是对于具体的数据标志和传输的值来确定的;
2.泛型的好处
首先,我们可以建立泛型之后,避免类型转化问题,其次确定类型之后,别的类型进入不了容器中;
安全:只有符合类型的数据才能进入容器中;避免类型转化:
3.泛型的实现方式
(1)泛型接口、泛型类
public interface Collection<E>
复制代码
import org.junit.Before;
import org.junit.Test;
/**
* @author lucas
* @time 2021/8/15/17:02
* @description
**/
public class Test1 {
@Test
public void test4234(){
//语文老师
Studentdb<Integer> china =new Studentdb<>();
china.name="玛丽";
china.score=66;
System.out.println("学生名字"+china.name);
System.out.println("学生的成绩"+china.score+"test3424");
}
@Before
public void test011111(){
//语文老师
Studentdb<String> china =new Studentdb<>();
china.name="玛丽";
china.score="优秀";
System.out.println("学生名字"+china.name);
System.out.println("学生的成绩"+china.score+"test111");
}
@Test
public void test02(){
//语文老师
Studentdb<Character> china =new Studentdb<>();
china.name="玛丽";
china.score='A';
System.out.println("学生名字"+china.name);
System.out.println("学生的成绩"+china.score+"test02");
}
@Before
public void test04(){
//语文老师
Studentdb<Character> china =new Studentdb<>();
china.name="玛丽";
china.score='A';
System.out.println("学生名字"+china.name);
System.out.println("学生的成绩"+china.score+"test04");
}
/**
* 鉴于不同的老师会给学生不一样的类型分数-我们可以采用泛型类的方式
* 进行数据统一标准,然后直接实现
* @param <T>
*/
//泛型一般放在名字之后
class Studentdb<T>{
private String name;
private T score;
}
interface db<E>{
int size();
int age();
}
}
复制代码
可以输出不同的数据来证明 class--有点策略模式的东西;
当在同一个类别中,一个属性的类型重复变化导致数据的类型变化
----我们可以将这种来使用我们策略模式来表示
好处:
(1)便于管理,安全性,只有合格的数据才能进入
(2)避免类型转化和强引用的
最普通的,我们集合类的父接口--collection--是一个抽象的接口;
这就是最标准的一个 public interface Collection<E>
如何成为一个使用泛型接口
class teacher extends Studentdb<String>{
//继承泛型的类。实现泛型的接口
// public abstract class AbstractCollection<E> implements Collection<E>
}
复制代码
注意事项:
泛型的实参是一个引用的数据类型和简单的-
Map<String,Object> dataMap=new HashMap();
复制代码
泛型类适用的范围:
(1)适用于返回值,参数,局部变量等;
(2)不能使用在静态的方法或者是属性中(static 中);
表示数据中的
我们可以指定 T 的类型,加上具体的范围,比如数字,(整数,小数)
class Studentdb<T extends Number>{
private String name;
private T score;
}
复制代码
如果没有按照泛型形参给予--,我们就建立泛型,默认是 object;
卢卡总结
泛型,表示标准的接口中或者参数传递中的标准,
既然是标准那就是多种情况,多种形式都可以用到的;
public class Result<T>{
//code
private integer code;
//消息
private String message;
//数据
T data;
}
复制代码
上述是一个基本的标准返回类
评论