泛型

泛型(三)模拟commons-dbutils

帅比萌擦擦* 提交于 2020-03-15 16:04:55
最近在复习泛型的知识,想起以前使用 commons-dbutils 的时候,觉得这个工具太厉害了。所以,试着自己瞎写看能不能模拟 commons-dbutils 的功能。 1、commons-dbutils的使用   1.1、commons-dbutils是用来简化JDBC的代码。下面是其简单用法: // 增删改 QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());// 创建QueryRunner,需要提供数据库连接池对象 String sql = "insert into t_students values(?,?,?,?)";// 给出sql模板 Object[] params = { 1, "liSi", 20, "female" };// 给出sql模板的参数 qr.update(sql, params); // 查询 QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from t_student where id = ?"; Object[] params = {1}; Stu stu = qr.query(sql, new BeanHandler<Stu>(Stu.class),

Java——容器(泛型)

那年仲夏 提交于 2020-03-14 19:12:09
【泛型】 起因:JDK1.4之前类型不明确 <1>装入集合的类型都被当做Object对待,从而失去自己的实际类型。 <2>从集合中取出时往往需要转型,效率低,且很容易出错。 解决办法: <1>在定义集合的时候同时定义集合中对象的类型 ----实例程序: List<String> c = new ArrayList<String>(); //原本传入的强制转换为Object类型,这里不需要了,直接限定为String类型 c.add("aa"); c.add("bb"); c.add("cc"); for(int i=0;i<c.size();i++){ String c = c.get(i); System.out.println(c); } 好处:增强程序的可读性和稳定性 【普通泛型】 package com.company.section1; public class Client { //工资低于2500元的上斑族并且站立的乘客车票打8折 public static <T extends Staff & Passenger> void discount(T t){ if(t.getSalary()<2500 && t.isStanding()){ System.out.println("恭喜你!您的车票打八折!"); } } //这里使用泛型编程,因为传入的参数有两种类型

Java 泛型的实际运用、使用数组实现栈

孤街浪徒 提交于 2020-03-14 17:36:42
1、泛型的实际应用——实现最小值函数 自己设计一个泛型的获取数组最小值的函数,并且数组的元素类型要是Number的子类并且实现了Comparable接口。 public <T extends Number & Comparable<? super T>> T min(T[] arr) { //因为Number并没有implements Comparable,所以需要&一起检查类型 if (arr == null || arr.length == 0) //数组未初始化或是空数组 return null; //如果数组有元素,就找到最小值 T min = arr[0]; for (int i = 1; i < arr.length; i++) { //arr.length是数组的元素个数 if (min.compareTo(arr[i]) > 0) //>0说明min>arr[i] min = arr[i]; } return min; } min前面的T是返回值类型,传入T类型的数组,返回的最小值也是T类型。 Comparable接口只有一个方法:compareTo(),比较2个的大小,返回一个int型的值,1表是前面的大,0表示2个相等,-1表示后面(括号里)的大。 如果数组元素没有实现Comparable接口,直接大于、小于比较也行。 测试: Integer

C#各版本新特性

瘦欲@ 提交于 2020-03-14 02:55:27
转 C# 2.0 泛型(Generics) 泛型是CLR 2.0中引入的最重要的新特性,使得可以在类、方法中对使用的类型进行参数化。 例如,这里定义了一个泛型类: class MyCollection<T> { T variable1; private void Add(T param) { } } 使用的时候: MyCollection<string> list2 = new MyCollection<string>();MyCollection<Object> list3 = new MyCollection<Object>(); 泛型的好处 编译时就可以保证类型安全 不用做类型装换,获得一定的性能提升 泛型方法、泛型委托、泛型接口 除了泛型类之外,还有泛型方法、泛型委托、泛型接口: //泛型委托 public static delegate T1 MyDelegate<T1, T2>(T2 item); MyDelegate<Int32, String> MyFunc = new MyDelegate<Int32, String>(SomeMethd); //泛型接口 public class MyClass<T1, T2, T3> : MyInteface<T1, T2, T3> { public T1 Method1(T2 param1, T3 param2) {

spring ioc 泛型保留

萝らか妹 提交于 2020-03-13 14:57:21
spring ioc 泛型保留 在上一篇中,说到spring中并不能自动注入泛型,如何生成泛型类型已经讲的很清楚了,在本篇着重讲在spring中如何自动注入。 环境 这里所有代码基于如下环境,如有出入请参考当前环境。 java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) implementation 'org.aspectj:aspectjweaver:1.9.2' implementation "org.springframework:spring-context:5.1.9.RELEASE" implementation 'org.javassist:javassist:3.25.0-GA' 方法一 通过实现 org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor 和 org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor 自定义bean泛型的注入

java基础---泛型

蓝咒 提交于 2020-03-12 04:36:43
java基础—泛型 1.泛型是一种未知的数据类型,当我们不知道使用什么数据类型的时候,就可以使用泛型 2.泛型也可以看成一个变量,用来接收数据类型 例: E e —Element:元素 T t —Type:类型 来源: CSDN 作者: 馒头太帅了 链接: https://blog.csdn.net/qq_39314972/article/details/104799673

c#范型

主宰稳场 提交于 2020-03-11 08:20:36
泛型介绍: 范型类和范型方法同事具备 可重用性、类型安全和效率 ,这是非范型类和非范型方法无法具备的。 所谓范型,即通过参数化类型实现同一份代码上操作多种数据类型,范型编程是一种编程范式, 它利用“参数化类型”将类抽象化,从而达到更灵活的复用。 机制: C# 泛型类型替换是在运行时执行的,从而为实例化的对象保留了泛型类型信息。C#泛型代码在被编译为IL代码和无数据时,采用特殊的占位符来表示泛型类型,并用专有的IL指令支持泛型操作。而真正的泛型实例化工作以"on-demand"的方式,发生在JIT编译时。 举例: 泛型通常用与集合以及作用于集合的方法一起使用。.NET Framework 2.0 版类库提供一个新的命名空间 System.Collections.Generic ,其中包含几个新的基于泛型的集合类。建议面向 2.0 版的所有应用程序都使用新的泛型集合类,而不要使用旧的非泛型集合类,如 ArrayList 。 C#泛型编译机制: 第一轮编译时,编译器只为Stack<T>(栈算法)类型产生“泛型版”的IL代码与元数据-----并不进行泛型类型的实例化,T在中间只充当占位符 JIT编译时,当JIT编译器第一次遇到Stack<int>时,将用int替换“泛型版”IL代码与元数据中的T---进行泛型类型的实例化。 CLR为所有类型参数为“引用类型”的泛型类型产生同一份代码

Java-泛型

左心房为你撑大大i 提交于 2020-03-10 02:57:48
泛型:是一种未知的数据类型,当我们不知到使用什么数据类型的时候可以使用泛型 泛型也可以看成是一个变量,用来接收数据类型: E e :Element 元素 | T E Type 类型 ArrayList集合在定义的时候,不知道集合中都会有什么数据类型,所以类型使用泛型 public class ArrayList{ public boolean add(E e){} public E get(int index){} } 创建集合对象的时候就会确定泛型的数据类型 会把数据类型作为参数传递,赋值给泛型. 使用泛型的好处: ================= public class FanXingCls { public static void main ( String [ ] args ) { // s 来源: CSDN 作者: 小 冷 链接: https://blog.csdn.net/weixin_45540985/article/details/104758428

C#之使类型参数--泛型

孤街醉人 提交于 2020-03-09 21:58:41
1 、泛型是什么 泛型的就是“通用类型”,它可以代替任何的数据类型,使类型参数化,从而达到只实现一个方法就可以操作多种数据类型的目的。 2 、为什么使用泛型 举一个比较两个数大小的例子: 以上例子实现int类型数据的大小比较是完全没有问题的,但是如果客户现在增加需求“又可以实现两个字符串大小的比较”,此时就不得不在类中再添加一个比较字符串大小的方法了: 如果客户现在还增加需求,要求实现浮点型的比较,那么工作量就更大了,不得不再次修改代码,显然这不是我们想看到的,两个方法中有大部分代码是类似的,所以微软提出了一个激动人心的特性--泛型,他使得类型可以被参数化。 where语句是类型参数的约束它用来使参数可以适用于CompareTo方法。 向泛型中加入元素的效率远比非泛型数组高,原因是非泛型rrayList的Add(Object value)方法中,参数为object类型,当把int参数i传入方法时,会发生装箱操作,从而导致性能的损失,使运行的时间变得更长。 泛型可以保证类型安全,当你向int类型数组中添加string类型的值的时候,会造成“无法从string类型转换为int类型”的错误,因为你用int类型初始化了泛型类型。 3 、泛型参数解析 1、类型参数 根据泛型类型参数是否已经提供实际类型,可分为未绑定的泛型和已构造的泛型,如果没有给泛型提供实际类型,此时的泛型成为未绑定的泛型

泛型

我们两清 提交于 2020-03-09 11:25:58
Java泛型简明教程 Java 集合有个缺点,就是把一个对象“丢进”集合里之后,集合就会“忘记”这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了 Object 类型(其运行时类型没变)。 但这样做带来如下两个问题: 集合对元素类型没有任何限制,这样可能引发一些问题。例如,想创建一个只能保存 Dog 对象的集合,但程序也可以轻易地将 Cat 对象“丢”进去,所以可能引发异常。 由于把对象“丢进”集合时,集合丢失了对象的状态信息,集合只知道它盛装的是 Object,因此取出集合元素后通常还需要进行强制类型转换。这种强制类型转换既增加了编程的复杂度,也可能引发 ClassCastException 异常。 所以为了解决上述问题,从 Java 1.5 开始提供了泛型。泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。本节将详细介绍 Java 中泛型的使用。 泛型集合 泛型本质上是提供类型的“类型参数”,也就是参数化类型。我们可以为类、接口或方法指定一个类型参数,通过这个参数限制操作的数据类型,从而保证类型转换的绝对安全。 例 1 下面将结合泛型与集合编写一个案例实现图书信息输出。 1)首先需要创建一个表示图书的实体类 Book,其中包括的图书信息有图书编号、图书名称和价格。Book 类的具体代码如下: public class