首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

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

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

    6K10编辑于 2023-03-30
  • 来自专栏韩曙亮的移动开发专栏

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

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

    13K30编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

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

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

    24.6K30编辑于 2023-03-29
  • 来自专栏冷环渊的全栈工程师历程

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

    泛型 什么是泛型: 泛型就相当于标签 形式:<> jdk1.5之后,用泛型来解决元素类型不确定的数据保存操作, 例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型 泛型对应的类型都是引用类型不能是基本类型 泛型类和泛型接口 声明泛型类时传入类型实参 创建泛型类对象时,传入类型实参 类型实参为空时,默认为Object类型 继承泛型类: 1.泛型父类不传入类型实参 ,默认为Object类型 2.泛型父类传入类型实参,子类既可以是泛型类,也可以不是 3.泛型父类传入类型实参,则子类必须是泛型类,且子类的类型形参列表必须包含父类的类型形参列表 泛型类的定义和实例化 泛型类的构造器写法: 不同泛型的引用类型不可以互相赋值 泛型如果不指定,就会被擦除,例子就是 泛型类中的静态方法不能使用类的泛型 不能直接使用泛型数组的创建,如果非要创建 泛型方法 什么是泛型方法 ,不是带泛型的方法就是泛型方法,泛型方法有要求:这个方法的泛型参数类型要和当前类的泛型方法的泛型无关 换个角度:泛型方法对应的那个泛型参数类型和当前所在的这个类,是否为泛型类,泛型是啥,无关 泛型方法定义的时候

    5.6K10发布于 2021-11-29
  • 来自专栏码思客

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

    泛型接口和泛型类 泛型接口的定义,public interface man<T>{...}。在接口名后面加上泛型类型参数T,这样就定义了一个泛型接口。 ? ,在类名后面加上泛型类型参数T,这样就定义了一个泛型类。 ? 泛型类 和泛型接口不同,类有构造器,并且构造器也可以使用泛型类型参数。 2.再看另一个问题,如果父类是泛型类型,如何定义子类? ? 泛型类的子类 如果将一个类定义为泛型类,那么在创建该泛型类的子类的时候不能将子类直接继承该泛型类,而是需要指定父类泛型的类型。 使用泛型 由于方法中的泛型需要在定义类的时候就指定,所以如果需要使用含有泛型的方法,必须在创建该泛型类对象的时候就需要指定泛型类型,因为使用的时候必须指定类型,不论是普通参数还是泛型参数。 泛型提供了一个泛型通配符用于接收所有类型的泛型类型。 泛型的通配符 ? 通配符 泛型的通配符可以很好的解决所有泛型类型父类的问题,使用<?>来作为类或接口的泛型参数,这样就可以抽象出泛型类的父类。

    3.9K20发布于 2019-07-04
  • 来自专栏程序那些事

    泛型泛型知多少

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

    1.8K10发布于 2020-07-08
  • 来自专栏痴心阿文的专栏

    TypeScript中泛型及泛型函数、泛型类、泛型接口,泛型约束,一文读懂

    泛型的定义(generic type 或者 generics) 泛型是TypeScript语言中的一种特性。 是程序设计语言的一种特性。泛型是一种参数化类型。  在使用过程中,泛型操作的数据类型会根据传入的类型实参来确定 泛型可以用在 类、接口、方法中,分别被称为 泛型类、泛型接口、泛型方法。 泛型类和泛型方法同时具备 通用性、类型安全和性能 ,是非泛型类和非泛型方法无法具备的 优势:高性能的变成方式、达到代码复用、提高代码通用性、 泛型使用的是类型参数(变量),它是一种特殊的变量,代表的是类型而不是值 泛型变量 T (generic type variables) 泛型变量(generic type variables)一般用大写字母 T 表示,如果有多高不同的泛型变量,可以同时用T、U、K表示。 但是有些情况下,函数需要处理的数据有一定的约束,比如有一个泛型函数需要访问泛型参数T的length属性,并加1。基于这种需求,必须对泛型参数T进行约束,也就是泛型约束。

    5.2K30编辑于 2022-11-21
  • 来自专栏韩曙亮的移动开发专栏

    【Kotlin】泛型总结 ★ ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 | 可变参数结合泛型 | out 协变 | in 逆变 | reified 检查泛型参数类型 )

    文章目录 一、泛型类 二、泛型参数 三、泛型函数 四、多泛型参数 五、泛型类型约束 六、可变参数 vararg 关键字与泛型结合使用 七、使用 [] 运算符获取指定可变参数对象 八、泛型 out 协变 九、泛型 in 逆变 十、泛型 invariant 不变 十一、泛型逆变协变代码示例 十二、使用 reified 关键字检查泛型参数类型 一、泛型类 ---- 定义一个 泛型类 , 将 泛型参数 T 都使用 T 来表示泛型 ; 代码示例 : 下面的代码中 , 声明了 Student 泛型类 , 该泛型类 接收 T 类型的泛型参数 , 在主构造函数中接收 T 类型的参数 , 在该泛型类中声明了 T ---- 泛型函数 中 如果涉及到 匿名函数 参数 , 匿名函数 的 参数返回值 都是泛型 的话 , 在该泛型函数 中可能需要使用多个泛型 , 使用不同的字母表示不同的泛型 ; 如果函数中 引入了新的泛型类型 R 的类型是 Boolean 类型 ; 3.14 true 五、泛型类型约束 ---- 在 泛型类 , 泛型函数 中 , 使用泛型前 , 需要声明 泛型参数 : 泛型类 泛型参数 声明 : 如果类中

    6.5K11编辑于 2023-03-30
  • 来自专栏大前端(横向跨端 & 纵向全栈)

    Dart中的泛型方法、泛型类、泛型接口

    泛型是为了解决方法逻辑相同,而数据类型不同造成的代码冗余问题。 1. 泛型方法 ? 为了能在一个方法里实现传入什么数据类型就返回什么数据类型,可以利用泛型将方法写成下面这样: ? 2. 泛型类 实现一个泛型类,List里面可以增加任意类型的数据,但是每次增加的数据类型必须统一。 ? 3. 泛型接口 实现数据缓存的功能:有文件缓存、和内存缓存。

    6.7K10发布于 2020-12-10
  • 来自专栏阿杜的世界

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

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

    4.3K30发布于 2018-08-06
  • 来自专栏bit哲学院

    java泛型之泛型边界

    一、实际类型   泛型的泛参可以使用实际类型。也就是类似于List<String>,直接指定泛型的类型。这时候泛型的表现最容易理解,输入和输出都为实际类型。 其主要用处之一是在使用Java或第三方的API的泛型类时,对泛参类型不同,但泛参具有继承关系,且主要关注其输入的泛型对象进行归纳。 泛型也叫参数化类型,顾名思义,通过给类型赋予一定的泛型参数,来达到提高代码复用度和减少复杂性的目的。   在Java中,泛型是作为语法糖出现的。 在虚拟机看来,List<E>这个泛型类型只是普通的类型List而已,这种行为叫泛型擦除(Type Erasure)。   那么在Java中泛型是如何如何实现其目的的呢?Java的泛型充分利用了多态性。 并在相应的地方自动生成checkcast字节码进行类型检查和转换,这样就既可以实现泛型,又不需要在字节码层面的进行改动来支持泛型。这样的泛型叫做伪泛型。   

    3.1K10发布于 2020-12-03
  • 来自专栏贾维斯Echo的博客

    Go 泛型之泛型约束

    Go 泛型之泛型约束 目录 Go 泛型之泛型约束 一、引入 二、最宽松的约束:any 三、支持比较操作的内置约束:comparable 四、自定义约束 五、类型集合(type set) 六、简化版的约束形式 更多的时候,我们需要对泛型函数的类型参数以及泛型函数中的实现代码设置限制。泛型函数调用者只能传递满足限制条件的类型实参,泛型函数内部也只能以类型参数允许的方式使用这些类型实参值。 所以,在 Go 泛型版本中,interface 语法也得到了一些扩展,也正是这些扩展给那些刚刚入门 Go 泛型的 Go 开发者带来了一丝困惑,这也是约束被认为是 Go 泛型的一个难点的原因。 ,Go 泛型可以根据泛型函数的实参推断出类型实参。 八、小结 本文我们先从 Go 泛型内置的约束 any 和 comparable 入手,充分了解了约束对于泛型函数的类型参数以及泛型函数中的实现代码的限制与影响。

    2.8K10编辑于 2023-12-29
  • 来自专栏技术小屋-未分类

    Java——泛型基本总结(通配符、泛型接口、泛型方法)

    2、泛型的通配符? 3、泛型接口(重点) 在接口上用泛型,就是泛型接口。 interface IMessage<T>{ public void print(T t);//方法上使用泛型 } 以上,实现 了泛型接口,但是对于泛型接口的子类,有两种实现形式: 模式一:子类继续使用泛型声明 4、泛型方法 若在一个方法使用了泛型,这个方法就称为泛型方法。 interface IMessage<T>{ public void print(T t);//方法上使用泛型 } 泛型方法不一定还要定义在泛型声明的一个类中,也可能就是一个方法定义为泛型方法。

    4.5K30发布于 2020-09-25
  • 来自专栏菩提树下的杨过

    泛型类泛型委托示例

    EventArgs e)         {             MyClass<string, string> _MyClass = new MyClass<string, string>();//实例化泛型类 _MyDelegate = new MyDelegate<string, string>(DemoMethod);//实例化_MyClass的泛型委托             MessageBox.Show (_MyClass.GetValues("Jimmy's Book","Jimmy"));//此时编译器已经能确定参数的类型为String,进而通过委托调用泛型方法DemoMethod           

    2.4K60发布于 2018-01-22
  • 来自专栏韩曙亮的移动开发专栏

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

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

    9.4K00编辑于 2023-03-28
  • 来自专栏JAVA

    Java泛型详解:为什么使用泛型?如何使用泛型?

    Java泛型详解:为什么使用泛型?如何使用泛型? 大家好!今天我要和大家一起探讨的是Java泛型,一个让我们的代码更加灵活、可读性更强的强大特性。 让我们开始这个有趣的泛型之旅吧! 一、为什么使用泛型? 泛型的好处可以总结为三个关键词:类型安全、代码复用和可读性。 首先,泛型可以保证类型安全。 二、如何使用泛型? 在Java中,使用泛型有三种方式:泛型类和泛型方法,泛型接口。 泛型类:我们可以通过在类的定义中使用< >来指定一个或多个类型参数,用于代替具体的类型。 当使用泛型时,我们可以在类或方法的定义中使用泛型类型参数来代表具体的类型。下面我将分别介绍泛型类和泛型方法; 1. 泛型类的使用: 泛型类可以在类的定义中使用类型参数来代表具体的类型。 泛型类是非常常见且强大的泛型应用方式。 2. 泛型方法的使用: 泛型方法可以在方法的定义中使用类型参数来代表具体的类型。

    1.5K10编辑于 2024-11-20
  • 来自专栏CSharp编程大全

    C#里面的泛型(T),泛型类,泛型方法,泛型接口等简单解释

    一、泛型T 这个T在实际使用中很常见,比如List<T>。其实我们还可以写成List<object>。但是这样写会有一个问题。 二、泛型方法 现在有一个需求,需要写一个方法,这个方法传入的参数可能是int型的,也可能是string型的。 没错,泛型这个东西最常用的应用场景就是数据集合。而List<T>就是一个存放各种数据的泛型类。 这个时候,TClass这个类就是泛型类,而它的构造方法,则和普通的类的构造方法的写法是一样的。 四、有了泛型类的概念,泛型接口就很好理解了,给上面的TClass写一个接口进行规范: interface ITClass<T> { void test(T param);

    5.7K20发布于 2020-08-19
  • 来自专栏科控自动化

    泛型

    2.1 泛型 使用泛型(generic),可以编写在编译时类型安全的通用代码,无须事先知道要使用的具体类型,即可在不同位置表示相同类型。在引入之初,泛型主要用于集合。 泛型类型和泛型方法的度 泛型类型或泛型方法可以声明多个类型形参,只需在尖括号 内用逗号把它们隔开即可,例如.NET中Hashtable类的泛型声明:public class Dictionary<TKey 坦白说,泛型度这个术语,我主要将其用于描述概念,对平时编写代码用处不是很大。不过了解这个概念还是有用的。可以将非泛型的声明视为泛型度为0。 泛型度是区分同名泛型声明的有效指标。 2.1.4节将介绍Tuple类,该类用于创建各种泛型Tuple类的实例。 类似于泛型类型,泛型方法也可以定义同名但泛型度不同的方法。 对于这些无法声明为泛型的类型成员,通常很难想象出它们如何才能成为泛型。有时我也有编写泛型构造器或者泛型索引器的需求,可最后往往是用一个泛型方法就实现了同样的功能。

    2.7K10编辑于 2022-03-29
  • 来自专栏生如夏花绚烂

    泛型

    这里就可以用到泛型了 泛型 使用泛型可以使我们在定义函数、接口或类的时候,预先不定义类型,而是在使用的时候定义类型 如上述的echo函数可以改造为 function echo<T>(arg: T):T{ ,相对于一个占位符,而T表示使用泛型。 result = swap(['string',123]) //[123,'string'] 约束泛型 如下例,定义一个泛型函数,并返回传入的数组参数 function echoWithArr<T > 意思是泛型可能没有length这个属性,也就是泛型并没有识别到“T”应该是Array 其实这里可以写成这样 编译通过,泛型被正确识别为数组 function echoWithArr<T>(arg :T[ 另一种方式是约束泛型 既然这里报错说泛型没有length属性,那我们使泛型继承一个有length属性的接口/类即可 interface WithLength{ length:number } function

    83430编辑于 2022-09-08
  • 来自专栏用户1175783的专栏

    # 泛型

    [TOC] # 泛型 ​ Dart2中的泛型同C#大部分都相同,可以按C#的用法来使用(只有小部分语法不同)。 1.创建泛型集合的几种方法 //工厂方法创建泛型集合实例,List<T>为Dart核心库中的类 var list=List<String>.from(['a','b']); //使用可忽略的new关键字 'b']; //使用构造函数,这点与C#不同,List<T>算然是抽象类也可new var list=new List<string>(); list.addAll(['a','b']); 2.自定义泛型类 ,泛型方法 class Hello{ void say<T>(){ } } //定义泛型类 class MyList<T>{ } //带约束的泛型类 class

    1.1K10发布于 2019-09-10
领券