泛型

Lists.newArrayList和Maps.newHashMap

China☆狼群 提交于 2019-12-20 06:53:53
先看他们创建时的部分源码。 new ArrayList: Lists.newArrayList: Lists和Maps是两个工具类, Lists.newArrayList()其实和new ArrayList()几乎一模一样, 唯一它帮你做的(其实是javac帮你做的), 就是自动推导(不是"倒")尖括号里的数据类型 (泛型)。 new HashMap: Maps.newHashMap: new HashMap 是 java原生API的写法,需要你手动添加泛型,而 Maps.newHashMap 这种是google的guava.jar提供的写法,目的是为了简化代码,不需要你手动写泛型。 当然,他们还有着丰富的重载,这里仅列举部分,感兴趣的朋友可以去打开源码瞅瞅。 来源: CSDN 作者: 想死却又不敢 链接: https://blog.csdn.net/hzw_mvp/article/details/103613617

011--TypeScript泛型

浪子不回头ぞ 提交于 2019-12-20 04:25:30
泛型创建可重用的组件 function identity(arg: any): any { return arg + '' //如果我们这样写传入了一个number,返回值类型将不是number //我们需要一种手段来约束传的值和返回值的类型 } function identity<T>(arg: T): T { // return arg + ''//我们定义一个泛型类型T再这样写将会报错 return arg } //第一种使用方法 let output = identity<string>('myString') //第二种使用方法,依靠类型推断 let output1 = identity('myString') function loginIdentity<T>(arg: T): T{ //console.log(arg.length)//这句话将报错,因为这个T是任意类型 return arg } //可以这样修改T类型的数组 function loginIdentity1<T>(arg: T[]): T[]{ console.log(arg.length) return arg } 泛型变量 泛型接口 function identity<T>(arg: T): T { return arg } let myIdentity: <T>(arg: T) => T =

ArrayList集合的使用

回眸只為那壹抹淺笑 提交于 2019-12-19 14:52:01
数组的长度不可以改变 但是 ArrayList集合的长度是可以随意变化的 对于ArrayList来说,有一个尖括号< E > ,代表的是泛型 泛型:也就是装在集合中的所有元素,全都是【统一】的什么类型,这与数组相像,只能是一种类型 注意 :泛型只能是引用类型,不能是基本数据类型。 注意: 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容 如果内容为空,那么就会得到空的中括号,[] //导包 import java . util . ArrayList ; public class Demo { public static void main ( String [ ] args ) { //创建一个ArrayList集合对象,名称为arr,里面装的全是String字符串数据类型 //从JDK1.7开始,右侧加括号里的内容可以不写,但是尖括号还是要写的 ArrayList < String > arr = new ArrayList < > ( ) ; //直接打印,得到的为空的[] System . out . println ( arr ) ; } } ArrayList中常见的方法有: public boolean add(E e):向集合中添加元素,参数的类型和泛型一致。E对 照泛型 注意:对于ArrayList集合来说,add添加动作一定成功

什么是泛型、为什么要使用以及泛型擦除

旧城冷巷雨未停 提交于 2019-12-19 12:59:46
泛型,即“参数化类型”。 创建集合时就指定集合元素的类型,该集合只能保存其指定类型的元素,避免 使用强制类型转换。 Java 编译器生成的字节码是不包涵泛型信息的,泛型类型信息将在编译处理是 被擦除,这个过程即类型擦除。泛型擦除可以简单的理解为将泛型 java 代码转 换为普通 java 代码,只不过编译器更直接点,将泛型 java 代码直接转换成普 通 java 字节码。 类型擦除的主要过程如下: 1).将所有的泛型参数用其最左边界(最顶级的父类型)类型替换。 2).移除所有的类型参数。 来源: https://www.cnblogs.com/chuanqi1995/p/11475327.html

ts--泛型

本秂侑毒 提交于 2019-12-19 11:48:37
//泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性,组件不仅要能支持当前的数据类型,同时也能支持未来的数据类型 //泛型就是解决 类 接口 方法的复用性 以及对不特定数据类型支持 //any放弃了类型检查,传入和返回的类型可以不一样 泛型T的使用可以让让返回和传出的类型一致 function getDate<T>(value: T): T { return value; } getDate<number>(123); //泛型类 class minClass { public list: number[] = []; add(num: number) { this.list.push(num); } min():number{ var minNumber=this.list[0]; for (let i = 0; i <this. list.length; i++) { if(minNumber>this.list[i]){ minNumber=this.list[i]; } } return minNumber; } } var m=new minClass(); m.add(2); m.add(21); m.add(12); m.add(1); console.log(m.min()); class MinClass<T> { public

《程序设计与数据结构》第二周学习总结

白昼怎懂夜的黑 提交于 2019-12-19 02:31:05
学号 20172326 《程序设计与数据结构》第二周学习总结 教材学习内容总结 栈遵循后进先出的的方式 对于一个栈,所有的操作都是从一端开始的。所以要寻求适合的数据结构来处理问题。 封装,继承,多态。封装是将部分变量,方法(的 内部细节)隐藏起来,使得不可见,从而提高安全性;继承,子类继承父类,提高代码的利用性;多态,在继承的基础上,重写父类的方法。 泛型提供了一种“宽泛” 的数据类型,使得返回值可以随方法的需要返回所需要的类型。 链表是先进先出的链式结构 教材学习中的问题和解决过程 问题1:泛型的理解,探究 问题1理解:什么是泛型,最直观的感受,就是一个类头中跟了一个 并取代了具体的数据类型的返回值。这就是泛型。意义在哪里呢?可以想见,对一个类,我们需要确定其返回值,同时,类内也需要别的计算过程,需要别的数据类型,不同的数据类型如果分别用各种数据类型定义,太过繁琐,效率太低。如果使用数据类型强制转换,可能导致程序奔溃或计算错误。同时,不同的数据类型存储在一起也不会出现错误。 问题2:继承中的super方法 问题2理解:在书中的一行代码中,在新建一个异常类时,使用到了,super方法 super("The "+ collection +"is empty."); super方法意味着什么呢?直接调用父类构造方法,同时也可以调用父类隐藏的方法,变量。 问题3:多态与重构的区别 理解

MyBatis-Plus公共字段自动填充无效排查

与世无争的帅哥 提交于 2019-12-18 11:53:45
目录 前言 MetaObjectHandler配置 entity字段注解 复现 原因 如何解决 但有疑问 前言 公司系统,mybatis-plus(v3.1.0)配置了MetaObjectHandler公共字段自动填充,一直以来都使用良好。昨天发现了个BUG——某些service方法更新时,不会自动填充edit_time,遂排查。 先说问题说在: XXService.update(Wrapper updateWrapper) 方法。 MetaObjectHandler配置 public class MetaObjectHandlerConfig implements MetaObjectHandler { // mybatis-plus公共字段自动填充,https://baomidou.oschina.io/mybatis-plus-doc/#/auto-fill @Override public void insertFill(MetaObject metaObject) { // System.out.println("插入方法实体填充"); // System.out.println(DateUtils.toDateText(new Date(),DateUtils.DEFAULT_DATE_TIME_FORMAT)); //System.out.println(

C#中Json转换主要使用的几种方法!

和自甴很熟 提交于 2019-12-17 20:09:13
这篇主要介绍2、4。第三种方法使用的比较局限,所以我没有深入学习。 第二种方法   我使用比较多的方式,这个方法是.NET内置的,使用起来比较方便 A、利用serializer获取json的泛型对象 利用Dictionary<string,object>接收转换完的json对象,然后用查询泛型的指令即可提取想要的json对象。 string JsonData = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”; JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary<string,object> json = (Dictionary<string, object>)serializer.DeserializeObject(JsonData); string firstKey = json.ElementAt(0).Key; string secondKey = json.ElementAt(1).Key; 当然还有很多其他数据类型,所以要灵活运用转换。 object[] jsonInnerObj = (object[])serializer.DeserializeObject(jsonList); //强制类型转化 Dictionary<string, object>

【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节(2)

对着背影说爱祢 提交于 2019-12-17 12:54:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 3,动手实战Scala中的泛型 泛型泛型类和泛型方法,也就是我们实例化类或者调用方法的时候可以指定其类型,由于Scala的泛型和Java的泛型是一致的,这里不再赘述。 4,动手实战Scala中的隐式转换、隐式参数、隐式类 隐式转换是很多人学习Scala的难点,这是Scala的精髓之一: 下面看一下隐藏参数的例子: 上面的例子中使用了隐式参数,当然,你可以显示的指明参数: 下面看一下隐式类: 来源: oschina 链接: https://my.oschina.net/u/1791057/blog/355196