泛型

.NET C# 泛型队列

天涯浪子 提交于 2019-12-02 08:53:12
1.QueueHelper using System.Collections.Concurrent; using System.Runtime.CompilerServices; namespace WindowsFormsServer.Helper { public static class QueueHelper<T> where T : class { private static ConcurrentQueue<StrongBox<T>> _queue; public static ConcurrentQueue<StrongBox<T>> Queue { get { return _queue ?? (_queue = new ConcurrentQueue<StrongBox<T>>()); } } public static void AddQueue(T t) { if (_queue == null) _queue = new ConcurrentQueue<StrongBox<T>>(); _queue.Enqueue(new StrongBox<T>(t)); } public static T DealQueue() { if (_queue == null) _queue = new ConcurrentQueue<StrongBox<T>>(); if

泛型缓存(Generic)

☆樱花仙子☆ 提交于 2019-12-02 08:04:52
在 2019-10-21 2019-10-21 发表的泛型当中我们说过一个很重要的点就是不同的泛型类,进入的时候其实在后台的时候创建了不同的类,所以进入的类其实是不同的由此我们可以想想出一种方法 来做缓存 1 namespace YZMDAL 2 { 3 public class SQLBuilder<T> where T: BaseModel 4 { 5 private static string FindOne = null; 6 private static string insertSql = null; 7 private static string updatedb = null; 8 private static string Deletesql = null; 9 /// <summary> 10 /// 无参构造器 11 /// </summary> 12 static SQLBuilder() 13 { 14 { 15 Type type = typeof(T);//获取类型 16 string columnString = string.Join(",", type.GetProperties().Select(x => $"`{x.GetColumnMappingName()}`")); 17 FindOne = $@"select

Java中声明泛型方法

送分小仙女□ 提交于 2019-12-02 07:49:26
泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test<T>{}。这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:Test<Object> t = new Test<Object>();,指明泛型T的类型为Object。 但是Java中的泛型方法就比较复杂了。 泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型。 定义泛型方法语法格式如下: 调用泛型方法语法格式如下: 说明一下,定义泛型方法时,必须在返回值前边加一个<T>,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。 Class<T>的作用就是指明泛型的具体类型,而Class<T>类型的变量c,可以用来创建泛型类的对象。 为什么要用变量c来创建对象呢?既然是泛型方法,就代表着我们不知道具体的类型是什么,也不知道构造方法如何,因此没有办法去new一个对象,但可以利用变量c的newInstance方法去创建对象,也就是利用反射创建对象。 泛型方法要求的参数是Class<T>类型,而Class.forName()方法的返回值也是Class<T>,因此可以用Class.forName()作为参数。其中,forName()方法中的参数是何种类型,返回的Class<T>就是何种类型

Java day12【第二十二章】泛型

偶尔善良 提交于 2019-12-02 06:18:23
【第二十二章】泛型 一.泛型问题引出:   泛型从JDK1.5之后追加到Java语言里面的,其主要目的是为了解决ClassCastException的问题,在进行对象的向下转型时,永远都存在有安全隐患。 而Java希望可以通过泛型可以慢慢解决掉此类问题。   泛型的问题引出:   现在假设说定义一个描述X与Y坐标的处理类,并且在这个类之中允许开发者保存三类数据。      · 整型数据:x=10、y=20;      · 浮点型数据:x = 10.1、y=20.9;      · 字符串型数据:x = 东经120度、北纬30度。   于是在设计Point类的时候就要去考虑具体的X和Y属性的类型,这个类型要求可以保存以上三种数据类型,最原始的做法就是利用Object类来进行定义。    class Point { private Object x; private Object y; public void setX(Object x){ this.x = x; } public void setY(Object y){ this.y = y; } public Object getX(){ return this.x; } public Object getY(){ return this.y; } } public class tsy { public static void

java-day11

跟風遠走 提交于 2019-12-02 03:43:39
集合类 Collection接口   定义的是所有单列集合中共性方法   创建对象使用多态  Collection<String> coll = new ArrayList<>()   add()  把给定的对象添加到当前集合中,返回一个boolean值   remove()  在集合中删除指定的对象,返回一个boolean值   contains()  判断当前集合是否包含给定对象,返回一个boolean值   isEmpty()  判断当前集合是否为空,返回一个boolean值   size(0  返回当前集合元素个数   toArray()  把当前集合存储到数组中   clear()  清除集合中元素,集合还是存在 Iterator接口  迭代器对集合进行遍历   hasNext()  判断集合中还有没有下一个元素   next()  取出集合中的下一个元素   Collection接口中的iterator()返回的就是迭代器的实现类对象   集合是什么类型,迭代器就是什么类型   Iterator<String> it = coll.iterator()  指向集合索引 -1 增强for循环 (底层使用的是迭代器)   用来遍历数组或集合   for(集合/数组的数据类型 变量名:集合/数组名) List集合:有序的集合,允许存储重复元素,有索引 Set集合

深入理解Java泛型

不羁岁月 提交于 2019-12-02 02:47:33
泛型是什么 一说到泛型,大伙肯定不会陌生,我们代码里面有很多类似这样的语句: List<String> list=new ArrayList<>(); 复制代码 ArrayList就是个泛型类,我们通过设定不同的类型,可以往集合里面存储不同类型的数据类型(而且只能存储设定的数据类型,这是泛型的优势之一)。“泛型”简单的意思就是泛指的类型(参数化类型)。想象下这样的场景:如果我们现在要写一个容器类(支持数据增删查询的),我们写了支持String类型的,后面还需要写支持Integer类型的。然后呢?Doubel、Float、各种自定义类型?这样重复代码太多了,而且这些容器的算法都是一致的。我们可以通过泛指一种类型T,来代替我们之前需要的所有类型,把我们需要的类型作为参数传递到容器里面,这样我们算法只需要写一套就可以适应所有的类型。最典型的的例子就是ArrayList了,这个集合我们无论传递什么数据类型,它都能很好的工作。 聪明的同学看完上面的描述,灵机一动,写出了下面的代码: class MyList{ private Object[] elements=new Object[10]; private int size; public void add(Object item) { elements[size++]=item; } public Object get(int index

149、ts泛型

こ雲淡風輕ζ 提交于 2019-12-02 02:21:18
泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。 //泛型函数的类型与非泛型函数的类型没什么不同,只是有一个类型参数在最前面,像函数声明一样. function createArray<T>(length: number, value: T): Array<T> { let result: T[] = []; for (let i = 0; i < length; i++) { result[i] = value; } return result; } createArray<string>(3, 'x'); // ['x', 'x', 'x'] //泛型参数的默认类型 function createArray<T = string>(length: number, value: T): Array<T> { let result: T[] = []; for (let i = 0; i < length; i++) { result[i] = value; } return result; } 泛型接口 interface CreateArrayFunc { <T>(length: number, value: T): Array<T>; } let createArray: CreateArrayFunc;

泛型编程

五迷三道 提交于 2019-12-02 01:55:28
泛型编程:写的代码可以处理任何的类型。(例如,当你要新建立一个数组时,但还不确定该数组的类型 可能后面要用的是整型数组,也可能要用的是字符串型数组,甚至栈类型数组。但因为Object类是所有类的 基类,所以此时只要将该数组定义成Object类型,这样其他的每个类型的数组都可以使用该Object类型的数 组, 这就是泛型编程。)   在早期Java 5版本出现之前,人们要实现泛型编程,都是将类型定义成Object类型来实现的。 1 package L14; 2 import java.util.Arrays; 3 4 public class ObjectTest { 5 private Object[] array; //定义一个Object类数组 6 private int size; //存储数据元素个数 7 8 public ObjectTest(int size){ 9 this.array= new Object[size]; //给数组初始化 //一般新new的都是对象,而T只是个类型参数 10 this.size=0; 11 } 12 public ObjectTest(){ 13 this(10); 14 } 15 public void add(Object data){ //将添加的元素定义成Object类型 16 if(this.size==this

class A<T>where T:new()是什么意思

坚强是说给别人听的谎言 提交于 2019-12-02 01:29:35
这是 C#泛型 类声明的语法 class A<T> 表示 A类接受某一种类型, 泛型 类型为T,需要 运行时 传入 where表明了对类型 变量 T的约束关系。where T:new()指明了创建T的 实例 时应该具有 构造函数 。一般情况下,无法创建一个泛型类型参数的实例。然而,new()约束改变了这种情况,要求类型参数必须提供一个无参数的构造函数。 来源: https://www.cnblogs.com/bwdblogs/p/11723792.html