020_泛型变量的类型限定
1. 泛型变量的类型限定
1.1. 实例
public static <T> T get(T t1,T t2) { if(t1.compareTo(t2) >= 0); // 编译错误 return t1;
}
1.2. 因为, 在编译之前, 也就是我们还在定义这个泛型方法的时候, 我们并不知道这个泛型类型T, 到底是什么类型, 所以, 只能默认T为原始类型Object。所以它只能调用来自于Object的那几个方法, 而不能调用compareTo方法。
1.3. 可我的本意就是要比较t1和t2, 怎么办呢? 这个时候, 就要使用类型限定, 对类型变量T设置限定(bound)来做到这一点。我们知道, 所有实现Comparable接口的方法, 都会有compareTo方法。所以, 可以对做如下限定:
public static <T extends Comparable<T>> T get(T t1,T t2) { // 添加类型限定 if(t1.compareTo(t2)>=0); return t1;
}
2. 类型限定在泛型类、泛型接口和泛型方法中都可以使用, 不过要注意下面几点:
2.1. 不管该限定是类还是接口, 统一都使用关键字 extends
2.2. 可以使用&符号给出多个限定, 比如:
public static <T extends Comparable<T>&Serializable> T get(T t1,T t2)
2.3. 如果限定既有接口也有类, 那么类必须只有一个, 并且放在首位置:
public static <T extends Object&Comparable&Serializable> T get(T t1,T t2)
020_泛型变量的类型限定相关推荐
- Java泛型总结---基本用法,类型限定,通配符,类型擦除
一.基本概念和用法 在Java语言处于还没有出现泛型的版本时,只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化.例如在哈希表的存取中,JDK1.5之前使用HashMap的 ...
- C++ 中的类型限定符 类型限定符提供了变量的额外信息。
类型限定符提供了变量的额外信息. 限定符 含义 const const 类型的对象在程序执行期间不能被修改改变. volatile 修饰符 volatile 告诉编译器不需要优化volatile声明的 ...
- java泛型程序设计——通配符类型+通配符的超类型限定
[0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 通配符类型+通配符的超类型限定 的知识: [1]通配符类型相关 1. ...
- Typescript类,泛型,各种类型工具
一.TypeScript 类 一个类可以包含以下几个模块: 1.属性 1.1 类属性 1.2 实例属性 2.构造函数(在python中叫初始化函数) 该函数在类实例化时会被立即调用 3.方法(也是函数 ...
- Java 泛型的本质——类型擦除
文章目录 简介 Java泛型的类型擦除的证明例子 类型擦除到边界 擦除的代价与使命 使用泛型不是强制的 泛型代码边界的动作 非泛型类库和泛型类库:字节码一模一样 擦除的补偿 泛型与工厂模式 泛型数组 ...
- Java 8新特性探究(6):泛型的目标类型推断
简单理解泛型 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.通俗点将就是"类型的变量".这种类型变量可以用在类.接口和方法 ...
- 学习笔记9-C语言-传参、类型限定符、递归
函数传参: 1.形参变量属于它所在的函数,出了该函数就不能使用 2.实参与形参之间都是以赋值的形式进行数据传递(值传递) 3.return 其实是把返回值数据放置到一个公共的区域(函数和函数调用者), ...
- C语言中的类型限定符有哪些?
C语言中有一些关键字起到了限定的作用,他们被称为限定符,那么在C语言中共有几个限定符呢?他们的作用分别是什么呢?本文主要介绍C中4个限定符 1.const2.volatile3.restrict4._ ...
- C语言类型限定符(type specifier)(一)——volatile详细教程
前言:C语言有几个类型限定符(type specifier),如C90中的const和volatile,C99中的restrict,C11中的_Atomic,除了const以外,很多书籍对于其他几个修 ...
最新文章
- const在函数声明中的应用(转)
- 我花了 8 小时,掌握了一下 Flutter | Flutter 中文站上线
- Boltzmann Machine 入门(1)
- 微型计算机常用的worm是,2010江西省计算机等级考试试题 二级C试题考试答题技巧...
- 计算机能够进行逻辑操作的部件是,第二章 计算机逻辑部件
- UOJ#269. 【清华集训2016】如何优雅地求和
- Android mvparms 踩坑
- 触摸屏:屏幕键盘(虚拟键盘)解决方案
- maven报错JAVA_HOME should point to a JDK not a JRE
- 大数据之路:阿里巴巴大数据实践
- excel等额本息计算房贷公式
- 工商管理学python_工商管理专业以数据分析师为目标怎么样?
- CentOS下使用命令行Web浏览器Links
- 【SpringBoot】38 个常用注解
- 树莓派改造成通用计算机,自制树莓派笔记本电脑,你也可以做到
- 解决click在ios反应慢的问题
- 算力网络中基于算力标识的算力服务需求匹配
- IBM x3690 x5服务器安装Debian Linux
- 漏洞解决方案-文件上传
- anaconda一次性更新所有安装库