首页
学习
活动
专区
圈层
工具
发布

C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托

不然 泛型集合和ArrayList的装箱拆箱 常见的泛型类型 泛型类和泛型方法 泛型约束 泛型委托 ###泛型很难理解?...可能大多数人刚学习泛型的时候觉得很难理解,当然我也是这样的,所以便写下这篇文章加深一下对泛型的印象。...第一次接触泛型那还是在大二上学期的时候,那会是学c#面向对象的时候接触过泛型集合,但尴尬的是那会还没有“泛型”这个概念,仅仅只停留在泛型集合的使用。...:这个泛型类常用api通用接口的泛型类。...,声明的时候还是和泛型类、泛型方法一样加个 站个坑,其实泛型委托使用的时候不是很多,要慎用。

3.8K30

【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )

文章目录 一、泛型类用法 二、泛型方法用法 三、泛型通配符 四、泛型安全检查 五、完整代码示例 1、泛型类 / 方法 2、main 函数 一、泛型类用法 ---- 泛型类用法 : 使用时先声明泛型 , 如果不声明泛型 , 则表示该类的泛型是 Object...: 指定 泛型类 的泛型为 String 类型 , 那么在该类中凡是使用到 T 类型的位置 , 必须是 String 类型 , 泛型类的 泛型声明 , 使用时在 类名后面 声明 ; /...getData2(T arg){ T data = arg; return data; } 指定泛型的方法 : 指定 泛型方法 的泛型类 , 泛型方法 的泛型声明...泛型个数 , 泛型的个数可以有很多个 * 多个泛型之间 , 使用逗号隔开 * * 泛型方法指定的泛型 T 与类中的泛型 T 没有任何关系 *

12K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )

    文章目录 一、泛型简介 二、泛型类 三、泛型方法 四、静态方法的泛型 五、泛型类与泛型方法完整示例 一、泛型简介 ---- 泛型 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上...; java 泛型 与 C++ 模板 : Java 中的泛型 , 是仿照 C++ 中的 模板 开发的 , 目的是让开发者可以写出 通用 , 灵活 的代码 ; 伪泛型 : Java 中的泛型 , 是 伪泛型..., Java 泛型开发好之后 , 在 编译阶段 就 将泛型相关的信息消除 了 , 不会泛型留到运行时 ; 泛型类型 : 泛型方法 : 方法有参数 , 方法的参数 可以指定成一些 泛型 ; 泛型类 :...---- 泛型方法 : 在方法的 返回值前 , 使用 声明泛型的方法 , 是泛型方法 ; 将某个类型作为参数传入 ; 泛型个数 : 该方法是泛型方法 , 且指定了 2 个泛型 , 泛型的个数可以有很多个..., 多个泛型之间 , 使用逗号隔开 ; 泛型方法 与 泛型类 中的泛型 : 泛型不同 : 泛型方法指定的泛型 T 与 类中的泛型 T 没有任何关系 , 这两个 T 可以是不同的类型 ; 泛型相同

    23K30

    泛型(泛型擦除)【java基础—-泛型】

    1.3 泛型定义(泛型类、泛型方法(泛型方法返回值是泛型的,泛型方法在普通类和泛型类里)): 1.4特点: 对于泛型特点(1)举个例子 : 没有使用泛型时的异常抛出 对于泛型特点(2)访问时不需要类型转换...2.1泛型类 2.2泛型接口与泛型类相似,不举例子了 2.3泛型方法 2.4.疑惑,为什么有泛型类了,还要有泛型方法,泛型类与泛型方法有什么区别,泛型方法有什么好处?...3.为什么要使用泛型,泛型的好处: 3.1泛型的好处 3.2泛型类的好处 4.使用泛型注意点: 4.1不同泛型之间不能相互赋值,泛型不存在多态((检查机制)泛型特点(3)) 4.2要注意泛型擦除...1.3 泛型定义(泛型类、泛型方法(泛型方法返回值是泛型的,泛型方法在普通类和泛型类里)): 10、泛型的定义是(带尖角号的T), 例如定义一个泛型类:public class Stu{ }...E,所以我们获取时就不用强转了。

    4.4K51

    Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符

    ,如果实例化的时候不明确指定泛型,那么默认为Object类型 package TestGeneric.GenericTest; public class test01e> { /* * 这是一个普通类...,不确定,相当于一个占位 * 但是现在确定的是这个类型一定是引用类型,而不是基本类型 * */ int age; String name; e sex; public void a(e n){ } public...,那么子类在实例化的时候需要指定 static class SubGeneric2e> extends test01e>{ } 泛型类可以定义多个参数类型...,不是带泛型的方法就是泛型方法,泛型方法有要求:这个方法的泛型参数类型要和当前类的泛型方法的泛型无关 换个角度:泛型方法对应的那个泛型参数类型和当前所在的这个类,是否为泛型类,泛型是啥,无关 泛型方法定义的时候...可以是 代码类型: public class test02e> { public void a(e e){ } public static void b(T t)

    4.8K10

    【Kotlin】泛型 ① ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 )

    文章目录 一、泛型类 二、泛型参数 三、泛型函数 四、多泛型参数 五、泛型类型约束 一、泛型类 ---- 定义一个 泛型类 , 将 泛型参数 T 放在 尖括号 中 , 该泛型参数放在 类名后...下面的代码中 , 声明了 Student 泛型类 , 该泛型类 接收 T 类型的泛型参数 , 在主构造函数中接收 T 类型的参数 , 在该泛型类中声明了 T 类型的成员属性 ; class Student...---- 通常情况下 , 泛型参数 都使用 T 表示 , 使用其它字母 或者 字符串 都可以表示 泛型参数 , 但是 约定俗成 都使用 T 来表示泛型 ; 在下面的代码中 , 使用 M 作为 泛型参数...---- 泛型函数 中 如果涉及到 匿名函数 参数 , 匿名函数 的 参数返回值 都是泛型 的话 , 在该泛型函数 中可能需要使用多个泛型 , 使用不同的字母表示不同的泛型 ; 如果函数中 引入了新的泛型类型...R 的类型是 Boolean 类型 ; 3.14 true 五、泛型类型约束 ---- 在 泛型类 , 泛型函数 中 , 使用泛型前 , 需要声明 泛型参数 : 泛型类 泛型参数 声明 : 如果类中

    5K10

    Java 泛型 T,E,K,V,?,傻傻分不清?

    泛型中通配符 我们在定义泛型类,泛型方法,泛型接口的时候经常会碰见很多不同的通配符,比如 T,E,K,V 等等,这些通配符又都是什么意思呢? 常用的 T,E,K,V,?...在类型参数中使用 extends 表示这个泛型中的参数必须是 E 或者 E 的子类,这样有两个好处: 如果传入的类型不是 E 或者 E 的子类,编译不成功 泛型中可以使用 E 的方法,要不然还得强转成...E 才能使用 private E extends B> E test(K arg1, E arg2){ E result = arg2; arg2.compareTo...super E> 下界: 用 super 进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至 Object 在类型参数中使用 super 表示这个泛型中的参数必须是 E 或者 E...car = operate(); 简单总结下: T 是一个 确定的 类型,通常用于泛型类和泛型方法的定义,?是一个 不确定 的类型,通常用于泛型方法的调用代码和形参,不能用于定义类和泛型方法。

    66240

    java泛型中的通配符 T,E,K,V,?

    java泛型 java泛型(generics)是jdk5引入的新特性,泛型提供了编译时类型安全检测机制,该机制运行开发者在编译时检测到非法的类型....泛型的本质是参数化类型,也就是说,将所操作的数据类型作为一个参数传递,通过这个类型参数,就能识别这个变量的类型 public class TestGeneric { private T...testGeneric.setT("test"); //可以直接打印getT(),默认为String System.out.println(testGeneric.getT()); } } 泛型中的通配符...无界通配符,这个东西一般会在方法参数上使用,搭配 E> 和 E> 使用 上界通配符 E> 该符号表示,在参数中,传入的类型必须是E或者继承与...extends Map> E test( E e) { return e; } 可以看出,在test方法中,传入了hashmap(实现了Map接口),可以正常使用 如果有多个类型参数

    1.1K10

    泛型接口,泛型类和泛型通配符

    比如 public void add(E e); 这里的add方法并没有指定任何一个具体的类型,而是将类型也作为了参数,E是任何一个类型,e是任意类型E的实例。...类型参数化 当使用泛型定义参数的时候,每一个传递进来的类型参数,就创建了一个该方法的版本,add(Student student)是一个add(E e)的版本,add (Teacher teacher)...也是一个add(E e)版本。...泛型提供了一个泛型通配符用于接收所有类型的泛型类型。 泛型的通配符 ? 通配符 泛型的通配符可以很好的解决所有泛型类型父类的问题,使用来作为类或接口的泛型参数,这样就可以抽象出泛型类的父类。...List提供的add(E e)方法是需要指定类型的,这里不是E吗?这是个泛型类型啊?为什么要提供类型?因为这是定义,一旦要使用add(E e)方法,必须指定具体的类型。

    3.3K20

    Java 泛型 T,E,K,V,?,傻傻分不清?

    泛型中通配符 我们在定义泛型类,泛型方法,泛型接口的时候经常会碰见很多不同的通配符,比如 T,E,K,V 等等,这些通配符又都是什么意思呢? 常用的 T,E,K,V,?...在类型参数中使用 extends 表示这个泛型中的参数必须是 E 或者 E 的子类,这样有两个好处: 如果传入的类型不是 E 或者 E 的子类,编译不成功 泛型中可以使用 E 的方法,要不然还得强转成...E 才能使用 private E extends B> E test(K arg1, E arg2){       E result = arg2;       arg2.compareTo...super E> 下界: 用 super 进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至 Object 在类型参数中使用 super 表示这个泛型中的参数必须是 E 或者 E...car = operate();   简单总结下: T 是一个 确定的 类型,通常用于泛型类和泛型方法的定义,?是一个 不确定 的类型,通常用于泛型方法的调用代码和形参,不能用于定义类和泛型方法。

    52810

    Java 泛型中 “T,E,K,V,?” 如何区分?

    Java 泛型中 “T,E,K,V,?” 如何区分?...泛型中通配符 我们在定义泛型类,泛型方法,泛型接口的时候经常会碰见很多不同的通配符,比如 T,E,K,V 等等,这些通配符又都是什么意思呢? 常用的 T,E,K,V,?...在类型参数中使用 extends 表示这个泛型中的参数必须是 E 或者 E 的子类,这样有两个好处: 如果传入的类型不是 E 或者 E 的子类,编译不成功 泛型中可以使用 E 的方法,要不然还得强转成...E 才能使用 private E extends B> E test(K arg1, E arg2){ E result = arg2; arg2.compareTo...大多数情况下泛型的使用比较简单,但是如果自己编写支持泛型的代码需要对泛型有深入的了解。这几篇文章介绍了泛型的基本用法、类型擦除、泛型数组以及通配符的使用,涵盖了最常用的要点,泛型的总结就写到这里。

    50210

    泛型泛型知多少

    简介 泛型是JDK 5引入的概念,泛型的引入主要是为了保证java中类型的安全性,有点像C++中的模板。 但是Java为了保证向下兼容性,它的泛型全部都是在编译期间实现的。...本文将会详细讲解泛型在java中的使用,以避免进入误区。...接下来我们考虑泛型的情况,List 是不是 List的父类呢?很遗憾,并不是。 我们得出这样一个结论:泛型不是协变的。 为什么呢?...刚刚我们讲到Array是协变的,如果在Array中带入泛型,则会发生编译错误。比如new List[10]是不合法的,但是 new List[10]是可以的。因为在泛型中?...所以我们在使用泛型时候的一些操作会遇到问题。 假如我们有一个泛型的类,类中有一个方法,方法的参数是泛型,我们想在这个方法中对泛型参数进行一个拷贝操作。

    1.5K10

    【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 )

    一、Dart 泛型类与泛型方法 泛型作用 : 为 类 , 接口 , 方法 提供复用性 , 支持类型不确定的数据类型 ; 泛型类 : 提高代码复用程度 ; 泛型方法 : 参数或返回值有泛型类型约束 , 参数或返回值类型必须符合对应的泛型类型...key){ return _map[key]; } } 测试上述泛型类 : /// 泛型测试类 class Generic{ /// 该方法测试泛型类及泛型方法 void test...(){ // 创建泛型类对象 , 泛型类型设置为 String 类型 Cache cache = Cache(); // 调用泛型方法时 , 传入的参数必须符合对应的泛型类型.../ 创建泛型类对象 , 泛型类型设置为 int 类型 Cache cache2 = Cache(); // 调用泛型方法时 , 传入的参数必须符合对应的泛型类型 //..., 如指定该泛型类型必须是某个类的子类 , 使用 约束该泛型必须是某个类的子类 ; 泛型类示例代码 : /// 泛型中的特定类型约束 /// 将泛型约束为某个类型的子类

    8.1K00

    Java泛型基础(二)泛型接口泛型方法# 总结

    本文首发于个人网站:Java中的泛型(二) 泛型可以应用于同一个类,该类可以针对多种类型使用,例如构建一个RedisTemplateService组件,用于处理当前应用中所有对象的缓存操作。...这篇文章主要介绍泛型应用于接口、方法和匿名内部类的一些知识点和使用案例,也包括《Java编程思想》中对应的练习题的解读。 泛型接口 泛型应用于接口,是工厂方法设计模式的一种应用。...在泛型中,基本类型无法作为类型参数,但是Java提供了自动打包和拆包的功能; 泛型方法 知识点总结 如果使用泛型方法可以取代将整个类(或接口)泛型化,那么就应该只使用泛型方法; static方法要使用泛型能力...在使用泛型类的时候,必须在创建对象的时候指定类型参数的值,但是在使用泛型方法时候,不必指明参数类型。...、泛型方法 本节练习用的代码:LearnJava

    3.9K30

    Go 泛型之泛型约束

    Go 泛型之泛型约束 目录 Go 泛型之泛型约束 一、引入 二、最宽松的约束:any 三、支持比较操作的内置约束:comparable 四、自定义约束 五、类型集合(type set) 六、简化版的约束形式...所以,在 Go 泛型版本中,interface 语法也得到了一些扩展,也正是这些扩展给那些刚刚入门 Go 泛型的 Go 开发者带来了一丝困惑,这也是约束被认为是 Go 泛型的一个难点的原因。...但当我们遇到下面示例中的泛型函数时,光依靠函数类型实参的推断是无法完全推断出所有类型实参的: func DoubleDefined[S ~[]E, E constraints.Integer](s S)...S { 因为像 DoubleDefined 这样的泛型函数,其类型参数 E 在其常规参数列表中并未被用来声明输入参数,函数类型实参推断仅能根据传入的 S 的类型,推断出类型参数 S 的类型实参,E 是无法推断出来的...我们还以上面 DoubleDefined 这个泛型函数为例,当通过实参推断得到类型 S 后,Go 会尝试启动约束类型推断来推断类型参数 E 的类型。

    1.5K10

    java泛型之泛型边界

    一、实际类型   泛型的泛参可以使用实际类型。也就是类似于List,直接指定泛型的类型。这时候泛型的表现最容易理解,输入和输出都为实际类型。...所以,不知道作者所说的we got (1)E(2)V(4)I(5)L(0)...是什么意思。可能是java某个老版本运行的结果。   我们可不想让(1)E(2)V(4)I(5)L(0)充满我们的代码。...泛型也叫参数化类型,顾名思义,通过给类型赋予一定的泛型参数,来达到提高代码复用度和减少复杂性的目的。   在Java中,泛型是作为语法糖出现的。...在虚拟机看来,ListE>这个泛型类型只是普通的类型List而已,这种行为叫泛型擦除(Type Erasure)。   那么在Java中泛型是如何如何实现其目的的呢?Java的泛型充分利用了多态性。...并在相应的地方自动生成checkcast字节码进行类型检查和转换,这样就既可以实现泛型,又不需要在字节码层面的进行改动来支持泛型。这样的泛型叫做伪泛型。

    2.7K10
    领券