泛型

java 自定义泛型

99封情书 提交于 2019-12-04 13:09:32
package generic; import java.util.*; public class GenericTest { /* * 1.泛型在继承方面的体现,虽然A 是 B 的父类,但是G<A> 和 G<B> 不具有子父类关系,二者是并列关系 * A 是 B的父类, A<G> 和 B<G> 具有子父类关系 * * */ public void test() { } /* * 2.通配符 ? * A 是 B的父类,G<A>和G<B>是并列关系,二者共同父类是G<?> * 并且G<?>内不能再添加数据 ,除了null * */ public void test3() { List<Object> list1 = null; List<String> list2 = null; List<?> list = null; List<String> list3 = new ArrayList<>(); list3.add("AA"); list3.add("BB"); list3.add("CC"); list = list3; //添加:只能加null list.add(null); //读取:只能用Object去读取 Object obj = list.get(0); } public void print(List<?> list) { Iterator<?> iterator

Java 5到Java8 的发展

懵懂的女人 提交于 2019-12-04 11:25:02
# Java 5到Java8 的发展 ## JDK 5 ### **自动装箱与拆箱** JDK1.5 为每一个基本数据类型定义了一个封装类。使 java 中的基本数据类型也有自己的对象 ```java int -->Integer double --> Double long --> Long char --> Character float --> Float boolean --> Boolean short --> Short byte -- > Byte ``` - 自动装包:将基本类型转换成为对象,例如:`int --> Integer` - 自动拆包:将对象转换成为基本数据类型,例如:`Integer --> int` 对于 JDK1.5 之前集合总不能存放基本数据类型的问题,现在也能够解决。 ### **枚举** 枚举是 JDK1.5 推出的一个比较重要的特性。其关键字为 `enum` 例如:定义代表交通灯的枚举 ```java public enum MyEnum{ RED,GREEN,YELLOW } ``` ### **静态导入** - 优点:使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。 - 缺点:过度使用会降低代码的可读性 ### **可变参数** 在 JDK1.5 以前

枚举的强制类型转化通用泛型方法

那年仲夏 提交于 2019-12-04 08:58:39
public static T ParseEnum<T>(object oValue, T defaultValue) { if (oValue == null) return defaultValue; if (oValue.Equals('\0')) return (T)Convert.ChangeType(0, typeof(T)); if (oValue is T) return (T)oValue; var sValue = oValue.ToString(); if (string.IsNullOrEmpty(sValue)) return defaultValue; try { var o = Enum.Parse(typeof(T), sValue); if (o == null) return defaultValue; return (T)o; } catch (Exception error) { return defaultValue; } } 来源: https://www.cnblogs.com/engyue/p/11851444.html

.NET 中的Dictionary HashTable 与 ConcurrentDictionary的区别

戏子无情 提交于 2019-12-04 08:28:14
共同点: 都是基于 Key-Value 形式的存储数据的集合 区别: Dictionary : 优点: 支持泛型,是类型安全的。即: Dictionary<TKey,TValue>, 可以减少类型转换,减少内存的消耗 缺点: 线程不安全,多线程同时访问一个Dictionary时可能会出现数据错乱。 HashTable: 优点:线程安全 缺点:不是类型安全的, hashTable<object,object>, 需要类型转换 ConcurrentDictionaey: 优点: 支持泛型,并且线程安全 参考链接:https://blog.csdn.net/yinghuolsx/article/details/72952857 运行效率对比图: 来源: https://www.cnblogs.com/Echolh/p/11848402.html

201871010104-陈园园 《面向对象程序设计(java)》第十一周学习总结

断了今生、忘了曾经 提交于 2019-12-04 06:36:37
201871010104-陈园园 《面向对象程序设计(java)》第十一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业要求在哪里 https://www.cnblogs.com/lily-2018/p/11441372.html 作业学习目标 (1) 理解泛型概念; (2) 掌握泛型类的定义与使用; (3) 了解泛型方法的声明与使用; (4) 掌握泛型接口的定义与实现; (5) 理解泛型程序设计,理解其用途。 第一部分:总结理论知识 1.泛型:也称参数化类型(parameterized type),就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。(如ArrayList类)。 2.泛型程序设计(Generic programming):编写代码可以被很多不同类型的对象所重用。 3.Pair类引入了一个类型变量T,用尖括号(<>)括起来,并放在类名的后面。 4.泛型类可以有多个类型变量。例如: public class Pair<T, U> { … } 5.类定义中的类型变量用于指定方法的返回类型以及域、局部变量的类型。 6.泛型方法的声明:泛型方法(1)除了泛型类外,还可以只单独定义一个方法作为泛型方法,用于指定方法参数或者返回值为泛型类型,留待方法调用时确定。 (2

TypeScript 泛型

眉间皱痕 提交于 2019-12-04 04:35:56
⒈介绍   软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。泛型可用于提升代码的重用性,我们希望自己编写的代码,无论是模块还是组件,不仅能支持当前设计的数据类型,而且也能支持将来的数据类型,这在大型系统中是非常基础且重要的功能。所以我们常常能在各种各样的静态类型的语言中看到泛型设计,使用 泛型 来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。 ⒉泛型函数   我们创建一个hello函数,这个函数直接让传入的参数作为返回值return。   假设一个不使用泛型的函数会是什么样子?   如果传入参数是数字的话,它是这样的 function hello(arg:number) :number{ return arg; }   当我们的需求变成字符串时,它是这样的 function hello(arg:string) :string{ return arg; }   当然我们也可以使用any类型来表达这种混沌感 function hello(arg:any) :any{ return arg; }   但any类型并不能准确的表达返回值与参数必须是相同类型,因为any代表任何类型,这使得我们的类型表达开始混乱了。   因此,我们需要一种表达方式来控制函数的参数类型,这就要用到泛型了。  

Java 容器 & 泛型:四、Colletions.sort 和 Arrays.sort 的算法

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 23:07:00
Writer:BYSocket(泥沙砖瓦浆木匠) 微博: BYSocket 豆瓣: BYSocket 本来准备讲 Map集合 ,还是喜欢学到哪里总结吧。最近面试期准备准备,我是一员,成功被阿里在线笔试秒杀回绝。平常心,继续努力。这次带来 Collections 和 Arrays 类中的经典算法剖析。 一、Colletions和Arrays Collentions 此类完全是服务容器的”包装器“。提供了一些操作或者返回容器的静态方法。而Arrays是用来操作数组的各种方法。其中它们的联系在于其中的Sort方法,也就是这次博客的主题。 二、插入,快速、归并基本算法 ① 插入排序 {a1},{a2,a3,a4,…,an}} {{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}} … {{a1(n-1),a2(n-1) ,…},{an(n-1)}} 原理及记忆方法: 每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。这通俗的是找座位思想。Java版实现如下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import java.util.Arrays; public class InsertionSort {

泛型

大憨熊 提交于 2019-12-03 22:54:42
为什么会有泛型? 泛型的应用 泛型定义在方法上 泛型定义在接口上 两种情况的用法(第二种比较常用,使用的时候才知道是什么泛型) 泛型的通配符 高级 来自为知笔记(Wiz) 来源: https://www.cnblogs.com/xues/p/11810335.html

TypeScript之泛型

荒凉一梦 提交于 2019-12-03 20:29:42
什么是泛型,有什么用? 泛型字面意思就是广泛的类型,怎么样才算广泛呢?当然是能变的最广泛嘛, 所谓泛型就是类型的变量写法,让你的变量的类型是动态可变的,应用场景如官方文档描述的例子: 一个函数,输入什么类型,就输出什么类型,如下: function identity< T>( arg: T): T { return arg; } 泛型使用方式在<>中声明变量(<type>),在作用域内部使用 函数中:function identity< T>( arg: T): T { return arg; } 接口中: interface GenericIdentityFn<T> { (arg: T): T; } 类中: class GenericNumber<T> { zeroValue: T; add: ( x: T, y: T) => T; } 泛型约束 interface Lengthwise { length: number; } function loggingIdentity< T extends Lengthwise>( arg: T): T { console.log(arg.length); // Now we know it has a .length property, so no more error return arg; } 来源: https://www

java中的泛型

别来无恙 提交于 2019-12-03 16:50:31
1.概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。  什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢? 顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参), 然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中, 操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。 2.泛型实例 List arrayList = new ArrayList(); arrayList.add("aaaa"); arrayList.add(100); for(int i = 0; i< arrayList.size();i++){ String item = (String)arrayList.get(i); Log.d("泛型测试","item = " + item); }  毫无疑问,程序的运行结果会以崩溃结束: java.lang.ClassCastException: java.lang.Integer