java dvd项目 泛型_【java集合】结合web项目对泛型的理解

一、泛型

关于泛型的概念,请参考博客:https://www.cnblogs.com/MrZhang1/p/7261232.html

举个例子:人类在不断向文明进化的过程中,创造了洗手间,本意是让大家文明生活。但有一天,当男人和女人同时进了一个洗手间,不好的事情就发生了。。恩。。呃。。,各位自行想象。本来建个洗手间是方便大家生活的,结果还制造了更大的麻烦。肿么办?!

建两个洗手间:男洗手间和女洗手间;规定,男人只能进男洗手间,女人只能进女洗手间。

泛型也经过了一个这样演化的过程:“ 从Java 5开始,引入了参数化类型(Parameterized Type)的概念,改造了所有的Java集合,使之都实现泛型,允许程序在创建集合时就可以指定集合元素的类型,比如List就表名这是一个只能存放String类型的List”

二、语法和使用

1、使用具体的泛型类型: 尖括号内带有具体的类型。

List strList = new ArrayList<>();

2、方法声明的时候:public  T getValue(){...}

比如我们常用的Web项目中,泛型是修饰类型的,在方法上,一般就是返回值和参数列表

返回值类型:可以定义为List等形式,但是实际开发中,一般都是不知道具体类型,定义形式如下  List test(T t){...} ,前边的可以理解为泛型的声明,只有声明了T,你才可以在方法中用到T,这一具体的类型, List是具体的返回值类型。

方法传参:可以用占位符限定的容器 比如 List,或者直接是占位符 T。

比如我们在使用工具类时,有将json转化为对象,我们可能将json转化为各种类型的对象,为了提高代码的复用性,我们使用工具类,将json转为T对象,到具体业务中再强转;

/**

* 将json结果集转化为对象

*

* @param jsonData json数据

* @param beanType 对象中的object类型

* @return

*/

public static T jsonToPojo(String jsonData, Class beanType) throws IOException {

T t;

try {

t = OBJECT_MAPPER.readValue(jsonData, beanType);

} catch (IOException e) {

throw e;

}

return t;

}

3、类或者接口使用泛型  interface Collection {..}

在真正的项目上,一些基础的公共类经常定义泛型,如下:

public interface GenericDao {

public abstract void saveOrUpdate(T t) throws DataAccessException; // 更新操作

public abstract T get(ID id) throws DataAccessException; //查询方法

}

三、注意

Java会在编辑期把泛型擦除掉,在JAVA的虚拟机中并不存在泛型,泛型只是为了完善java体系,增加程序员编程的便捷性以及安全性而创建的一种机制,在JAVA虚拟机中对应泛型的都是确定的类型,在编写泛型代码后,java虚拟中会把这些泛型参数类型都擦除,用相应的确定类型来代替,代替的这一动作叫做类型擦除,而用于替代的类型称为原始类型,在类型擦除过程中,一般使用第一个限定的类型来替换,若无限定,则使用Object。

关于泛型的知识还有很多,小编就不在这里一一讲解了。

参考博客:https://www.cnblogs.com/ldh-better/p/7127308.html#_label1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值