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

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

    文章目录 一、类 二、参数 三、型函数 四、多参数 五、类型约束 一、类 ---- 定义一个 类 , 将 参数 T 放在 尖括号 <T> 中 , 该参数放在 类名后 , 主构造函数之前 , 该参数 T 是 类型占位符 , 在 该类类中 可以使用 类型占位符 T 作为一个类 使用 , 可以 定义 T 类型成员属性 主构造函数中可以接收 T 类型的实例对象作为参数 下面的代码中 , 声明了 Student 类 , 该类 接收 T 类型参数 , 在主构造函数中接收 T 类型的参数 , 在该类中声明了 T 类型的成员属性 ; class Student T 的实际类型是 String 类型 , 在 logT 中 R 的类型是 Double 类型 ; student2 实例对象中 , T 的实际类型是 Int 类型 , 在 logT 中 R 的类型是 Boolean 类型 ; 3.14 true 五、类型约束 ---- 在 类 , 型函数 中 , 使用前 , 需要声明 参数 : 参数 声明 : 如果类中

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

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

    一、Dart 类与方法 作用 : 为 类 , 接口 , 方法 提供复用性 , 支持类型不确定的数据类型 ; 类 : 提高代码复用程度 ; 方法 : 参数或返回值有类型约束 , 参数或返回值类型必须符合对应的类型 , 使用时会进行类型检查约束 , 如果设置错误的类型 , 编译时报错 ; 类示例 : /// 作用 : 为 类 , 接口 , 方法 提供复用性 , 支持类型不确定的数据类型 /// /// / 创建类对象 , 类型设置为 int 类型 Cache<int> cache2 = Cache(); // 调用方法时 , 传入的参数必须符合对应的类型 // (24673): 测试, 类型字符串, 获取的缓存内容为 Tom I/flutter (24673): 测试, 类型整型, 获取的缓存内容为 18 二、Dart 中的特定类型约束 还可以进行特定类型约束 , 如指定该类型必须是某个类的子类 , 使用 <T extends Person> 约束该必须是某个类的子类 ; 类示例代码 : /// 中的特定类型约束 /// 将约束为某个类型的子类

    8.2K00编辑于 2023-03-28
  • 来自专栏韩曙亮的移动开发专栏

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

    都使用 T 来表示 ; 代码示例 : 下面的代码中 , 声明了 Student 类 , 该类 接收 T 类型参数 , 在主构造函数中接收 T 类型的参数 , 在该类中声明了 T T 的实际类型是 String 类型 , 在 logT 中 R 的类型是 Double 类型 ; student2 实例对象中 , T 的实际类型是 Int 类型 , 在 logT 中 R 的类型是 Boolean 类型 ; 3.14 true 五、类型约束 ---- 在 类 , 型函数 中 , 使用前 , 需要声明 参数 : 参数 声明 : 如果类中 子类对象 ; 在 类 中 , 如果只将 类型 作为 函数的参数 类型 , 则在 声明 参数 类型 时 , 在 参数 前 使用 in 关键字 , 同时 该 类 又称为 消费类 (t: T) } 十、 invariant 不变 ---- 在 类 中 , 如果 既将 类型 作为 函数的参数 类型 , 又将 类型 作为 函数的返回值 类型 , 则在 声明 参数

    5.8K11编辑于 2023-03-30
  • 来自专栏泰斗贤若如

    类、方法、类型通配符的使用

                                               类、方法、类型通配符的使用 一.类        类的声明和非类的声明类似,除了在类名后面添加了类型参数声明部分 和方法一样,类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个参数,也被称为一个类型变量,是用于指定一个类型名称的标识符。 下面是定义方法的规则: 所有方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的<E>)。 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个参数,也被称为一个类型变量,是用于指定一个类型名称的标识符。 类型参数能被用来声明返回值类型,并且能作为方法得到的实际参数类型的占位符。 方法体的声明和其他方法一样。

    6.2K40发布于 2019-06-19
  • 来自专栏Rust语言学习交流

    与关联类型

    与关联类型 和其他我学过的语言相比较,Rust有一些令人费解的概念。 TL;DR: 一个关于何时使用何时使用关联类型的粗略答案是:如果针对特定类型的trait有多个实现(例如From<T>)则使用,否则使用关联类型(例如Iterator 和 Deref)。 (Generic Types) 在trait上下文中, 又被称作类型参数(type parameters),用于在具体实现trait时使用的类型和关联类型最重要的一点是都允许你延迟决定trait类型到实现阶段。即使二者语法不同,关联类型总是可以用来替代实现,但反之则不一定。 不同之处 我们已经看到,和关联类型在很多使用场合是重叠的,但是选择使用还是关联类型是有原因的。

    1.9K20发布于 2020-04-07
  • 来自专栏Java与Android技术栈

    Kotlin 类型擦除

    Java 的优点 是 Java 5 的重要特性之一。的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 这种参数类型可以用在类、接口和方法的创建中,分别称为类、接口、方法。 Java 通过类型擦除支持 Java 为了兼容性的考虑,采用擦除的机制来支持。 Kotlin 如何获得声明的类型 跟 Java 一样,Kotlin 也是通过类型擦除支持。 但是 Kotlin 的数组支持,因此它们并不会协变。 ,并介绍了如何获得声明的类型

    2.4K30发布于 2019-06-11
  • 来自专栏IT技术订阅

    Java类型擦除问题

    Java类型擦除问题 以前就了解过Java的实现是不完整的,最近在做一些代码重构的时候遇到一些Java类型擦除的问题,简单的来说,Java中所指定的类型在编译时会将其去除,因此List< 因此java只能做到编译期检查的功能,运行期间就不能保证类型安全。 ,但是因为类型擦除,所以实际上获取不到他的类型。 按照以下尝试 通过((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()获取类型,经过测试是获取不到的 第二种是创建spec的子类中使用这个方法就可以获取类型 @Data public abstract static class AbstractSpec<T> { public String

    1.7K20编辑于 2022-06-23
  • 来自专栏贾维斯Echo的博客

    Go 类型参数

    Go 之了解类型参数 一、Go 的与其他主流编程语言的差异 Go和其他支持的主流编程语言之间的设计与实现存在差异一样,Go 的与其他主流编程语言的也是不同的。 ; 方法(generic method):类型的方法。 ,即类型。 五、类型 5.1 声明类型 所谓类型,就是在类型声明中带有类型参数的 Go 类型,比如下面代码中的 maxableSlice: // maxable_slice.go type maxableSlice 六、方法 我们知道 Go 类型可以拥有自己的方法(method),类型也不例外,为类型定义的方法称为方法(generic method),接下来我们就来看看如何定义和使用方法。

    1.7K10编辑于 2023-12-24
  • 来自专栏爬坑之路

    Kotlin 类型参数约束

    上一篇文章讲了 Kotlin :基本使用,接下来我们再进一步了解使用相关的进阶知识。本篇是 Kotlin 类型参数约束的讲解,更多内容可点击链接查看。 Kotlin :基本使用Kotlin 类型参数约束系列持续更新中,欢迎关注订阅。 为什么需要类型参数约束在上一篇文章里,我们使用定义了一个列表List<T>,使用这个列表,我们可以在使用的时候,实例化出各种具体类型的列表,比如字符串列表List<String>、整型列表List 它实际上对非数值类型不生效,但它却误导了使用者,引入了潜在问题,也失去了使用的提供的很重要的一个好处:通过编译器在编译期进行类型检查,找出潜在的类型错误,进而保证程序的健壮。 中的属性也同样变得可空,这使得类在具体实现的时候,需要考虑参数为空的情况,也让编写代码的具体实现变得复杂。

    3.9K31编辑于 2023-02-24
  • 来自专栏C/C++基础

    Golang 实现类型转换

    文章目录 1.前言 2.To String 3.To Other Type 3. 4.使用示例 5.go-huge-util 参考文献 1.前言 Golang 标准库提供了很多类型转换的函数,如 strconv 包可完成 string 与基本数据类型之间的转换。 , fmt.Errorf("unable to cast %#v of type %T to bool", i, i) } } // ToIntE, ToInt8E, ToInt16E... 3. 最终,我们可以通过完成对上面多个具体类型转换函数的封装。 这样我们只需要调用一个函数,便可完成对所有类型的转换。

    4.2K20编辑于 2022-12-30
  • 来自专栏一杯82年的JAVA

    JAVA类型擦除

    的本质是参数化类型,这种参数类型可以用在类、接口和方法的创建中。 是在JAVA 1.5版本中才引入的,它能和以前的版本兼容的原因是信息只存在于代码编译阶段,在进入 JVM 之前,与相关的信息会被擦除掉,即类型擦除。 的定义与使用 根据使用情况可以分为以下三种: 方法 接口 下面是一个常用的类: // 一个类,可以根据需要包装不同结果的返回值 public class Result<T> 通配符 如果在某些场景下我们不关注(或者不那么关注)对象的类型参数,可以使用通配符。 在Java SE 1.5之前,没有的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的

    2.4K40发布于 2019-08-26
  • 来自专栏韩曙亮的移动开发专栏

    【Kotlin】 ③ ( out 协变 | in 逆变 | invariant 不变 | 逆变协变代码示例 | 使用 reified 关键字检查参数类型 )

    文章目录 一、 out 协变 二、 in 逆变 三、 invariant 不变 四、逆变协变代码示例 五、使用 reified 关键字检查参数类型 本章总结 : 使用了 out 作为 函数的返回值 类型 , 则在 声明 参数 类型 时 , 在 参数 前 使用 out 关键字 , 同时 该 类 又称为 生产类 ( 生产接口 ) , 用于生产 类 指定的对象 - 使用 in 关键字 , 可以使 父类对象 赋值给 子类对象 ; 在 类 中 , 如果只将 类型 作为 函数的参数 类型 , 则在 声明 参数 类型 时 , 在 参数 前 类型 作为 函数的返回值 类型 , 则在 声明 参数 类型 时 , 既不使用 in 关键字 , 又不使用 out 关键字 ; 代码示例 : 在下面的接口中 , 类型 即用于作为 返回值 , ---- 参数类型 T 在 运行时 会被 类型擦除 , 因此 在运行时 是 不知道 参数 的 具体类型 的 , 借助 reified 关键字 可以检查 运行时 参数 的 具体类型 ;

    2.8K10编辑于 2023-03-30
  • 来自专栏全栈程序员必看

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

    不然 集合和ArrayList的装箱拆箱 常见的类型 类和方法 约束 委托 ###很难理解? 的定义主要有以下两种: 1.在程序编码中一些包含类型参数的类型,也就是说的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义) 2.在程序编码中一些包含参数的类。 当针对不同类型具有相同行为的时候,也就是发挥作用的时候。 优点: 1.使用类、方法,我们可以极大提高代码的重用性,不需要对类型不同代码相同(仅类型参数不同)的代码写多次。 ###常见的类型### 在类型的定义中,出现的每个T(一个展位变量而已叫别的名字也行)在运行时都会被替换成实际的类型参数。 ###类型参数约束### 为什么要使用类型参数的约束呢,简单点说就是筛选类型参数,在使用的代码中如果违反了某个约束不允许的类型来实例化则会产生编译错误,类型参数的约束是使用关键字where。

    3.9K30编辑于 2022-09-14
  • 来自专栏walterlv - 吕毅的博客

    .NETC# 判断某个类是否是类型接口的子类型

    .NET/C# 判断某个类是否是类型接口的子类型 2018-09-01 08:28 .NET 中提供了很多判断某个类型或实例是某个类的子类或某个接口的实现类的方法 本文将提供判断接口实现或类型子类的方法。 所以我们可以充分利用这一点完成类型的判断。 ///

    /// 判断指定的类型 <paramref name="type"/> 是否是指定类型的子类型,或实现了指定接口。 </param> /// <param name="generic">接口类型,传入 typeof(IXxx<>)</param> /// <returns>如果是接口的子类型,则返回

    5.6K20发布于 2018-09-18
  • 来自专栏韩曙亮的移动开发专栏

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

    : 指定 类 的为 String 类型 , 那么在该类中凡是使用到 T 类型的位置 , 必须是 String 类型 , 类的 声明 , 使用时在 类名后面 声明 ; / / 指定 类 的为 String 类型 // 那么在该类中凡是使用到 T 类型的位置 , 必须是 String 类型 // 类的 声明 : 如果不 指明类型 , 则 类型 默认为 Object 类型 ; 如下面的示例 , 获取的 类型的变量也是 Object 类型 , 需要强转为 String 类型 ; / (); 二、方法用法 ---- 方法 : 给下面的方法 , 传入 String 作为参数 , 则 方法中的 T 的类型就是 String 类型 ; public <T, A> T , 隐含将 T 设置为 String 类型 ; // 方法 中 也可以不声明类型 // 传入的参数是 T 类型 //

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

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

    文章目录 一、简介 二、类 三、方法 四、静态方法的 五、类与方法完整示例 一、简介 ---- 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上 类 也可以有参数 , 将 类型 作为 参数 传入类中 ; 接口 : 接口 的 参数 , 也可以是 ; 将 类型 传入 方法 , 类 , 接口 中 , 可以 动态地 指定一些类型 ; 的性能 ; 二、类 ---- 类 : 在 类名后面 使用 <T> 声明 , 则在该类中 , 可以使用该类型 T 类型 ; 特别注意 , 该类中的 如下 2 个方法 不是 方法 ; 其中的 参数 , 返回值 类型是 T , 但 这个 T 是作为一个正常的类型使用的 , 并不是声明在 方法 中的 ; 如果 类 , 接口 , 方法 是 类 , 接口 , 方法 , 则该 不能是类的 ; 错误用法 : 正确用法 : 五、类与方法完整示例 ---- /** * 类 * 该 T 类型作为参数使用 * T 是参数化类型 , 可以由外部传入

    23.5K30编辑于 2023-03-29
  • 来自专栏码农沉思录

    Java如何优雅获取类型

    场景 假设我们定义了一个类,内部有一个数据结构,为 T,当我们输入一个 Json 字符串,想把这个 Json 反序列化成对象,那么此时,我们就需要知道这个类型。 ,但获取类型是在父类。 先说结论:通过 Java 反射包的 ParameterizedType 工具获得具体类型。 Type[] 数组就是该类(我们这里是父类)的,rawType 是原始类型,即 Base 的 Class 类型。而 OwnerType 返回的则是 Base 类型。 Class,获取到数组,返回第一个(因为我们只有一个类型的 Class。

    13.7K30发布于 2018-12-24
  • 来自专栏Rust入门笔记

    【Rust学习】24_类型

    T和 U 的,其中 x 的类型T 的类型y为 U。 通过在 impl 后面声明 T 作为一个类型,Rust 就能够识别出 Point 中尖括号内的类型是一个类型,而不是一个具体类型。 我们本可以选择一个与结构体定义中声明的参数不同的名字,但使用相同的名字是符合惯例的。在声明了类型的 impl 块中编写的方法将被定义在任何实例的类型上,无论最终替代类型的具体类型是什么。 参数 X2 和 Y2 在 fn mixup 之后声明,因为它们只与方法相关。使用的代码性能您可能对使用类型参数是否会引入运行时性能开销感到好奇。 单态化是将代码转换成特定代码的过程,具体来说,就是在编译时根据实际使用的具体类型来填充类型参数。在这个过程中,编译器会查看所有调用代码的地方,并为这些调用生成具体类型的代码。

    50310编辑于 2025-01-14
  • 来自专栏全栈程序员必看

    擦除)【java基础—-

    目录 1.什么是 1.1概念: 1.2本质:参数化类型 1.3语法:, T 称为类型占位符,表示一种引用类型。 4.3不能实例化,例如 T t = new T(); 理由:擦除T都没了 4.4不能是基本类型本质是一种引用类型),还有考虑到擦除后的类型,例如为Object类型时,Object 中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter),这种参数类型可以用在类、接口和方法的创建中,分别称为类、接口、方法。 4.4不能是基本类型本质是一种引用类型),还有考虑到擦除后的类型,例如为Object类型时,Object不能存储基本类型int,double… 5.擦除 5.1 擦除概念: 类型擦除指的是通过类型参数合并 编译器只为类型生成一份字节码,并将其实例关联到这份字节码上。类型擦除的关键在于从类型中清除类型参数的相关信息,并且再必要的时候添加类型检查和类型转换的方法。

    4.5K51编辑于 2022-11-02
  • 来自专栏冷环渊的全栈工程师历程

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

    什么是就相当于标签 形式:<> jdk1.5之后,用来解决元素类型不确定的数据保存操作, 例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做 <>引起来的参数类型,这个参数类型具体在使用的时候才会确定类型 使用了后,可以确定集合的类型,在编译的时候就可以检查出来 使用可能觉得麻烦,实际上使用才会简单,后续的便利操作会简单许多 对应的类型都是引用类型不能是基本类型 类和接口 声明类时传入类型实参 创建类对象时,传入类型实参 类型实参为空时,默认为Object类型 继承类: 1.父类不传入类型实参 ,默认为Object类型 2.父类传入类型实参,子类既可以是类,也可以不是 3.父类传入类型实参,则子类必须是类,且子类的类型形参列表必须包含父类的类型形参列表 类的定义和实例化 ,不是带的方法就是方法,方法有要求:这个方法的参数类型要和当前类的方法的无关 换个角度:方法对应的那个参数类型和当前所在的这个类,是否为类,是啥,无关 方法定义的时候

    4.8K10发布于 2021-11-29
领券