java 泛型初理解
泛型方法的定义:
方法1:其中<T extends Comparable<T>> 是用来修饰 List<T>中的T的,意味T必须继承Comparable接口
public static <T extends Comparable<T>> void sort(List<T> list)
方法2:其中<T extends Comparable<? super T>> 是用来修饰 List<T>中的T的,意味T或T的父类必须继承Comparable接口
public static <T extends Comparable<? super T>> void sort(List<T> list)
定义测试对象(count最好给个随机数):
public class A implements Comparable<A>
{
protected int count; @Override
public int compareTo(A other)
{
return this.count- other.count;
}
} public class B extends A
{
}
实例化测试对象,调用sort方法测试
List<A> a= new ArrayList<A>();
a.add(new A());
a.add(new A()); List<B> b= new ArrayList<B>();
b.add(new B());
b.add(new B()); sort(a);
sort(b);//sort的泛型修饰符是<T extends Comparable<T>> 就会报错,因为B继承了A但本身没有实现Comparable接口,也不能实现,因为父类已经实现了。
功能主要用来实现,扩展List的排序,比较等方法:
1 public class Date
2 implements java.io.Serializable, Cloneable, Comparable<Date>
java.sql.Date 是 java.util.Date 的子类。
1 public class Date extends java.util.Date
java.util.Date实现了Comparable<java.util.Date>~,所以 ~java.sql.Date也拥有了Comparable<java.util.Date>类型。java.sql.Date不能再implements Comparable<java.sql.Date>。- 如果你有一个
List<java.sql.Date>并对它排序的话,只能传给拥有<T extends Comparable<? super T>>这种类型参数的方法。
java 泛型初理解的更多相关文章
- 对java泛型的理解
正确的应用java泛型的特性可以更好的实现编程的开闭原则(对扩展开放,对修改关闭),这得益于java泛型提供的在程序运行时获取对象声明类型的特性. 静态语言的特性是在程序编译前进行声明,这样程序在编译 ...
- java泛型的理解
总体介绍泛型: 1.泛型是计算机程序中一种重要的思维方式,它将数据结构和算法与数据类型相分离,使得同一套数据结构和算法,能够应用于各种数据类型,而且还可以保证类型安全,提高可读性.在Java中,泛型广 ...
- Java泛型深入理解(转载)
原文地址 http://blog.csdn.net/sunxianghuang/article/details/51982979 泛型之前 在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将 ...
- Java:泛型的理解
本文源自参考<Think in Java>,多篇博文以及阅读源码的总结 前言 Java中的泛型每各人都在使用,但是它底层的实现方法是什么呢,为何要这样实现,这样实现的优缺点有哪些,怎么解决 ...
- 对于Java泛型的理解
源起:查看COLLECIOTNS类 Q1:为什么java需要泛型? 因为java对于对象类型的确认在编译期,那么强制类型转换就可以通过编译,但是运行时的错误却无法避免,那么泛型的存在可以避免强制类型转 ...
- Java泛型深入理解
泛型的优点: 泛型的主要优点就是让编译器保留參数的类型信息,执行类型检查,执行类型转换(casting)操作,编译器保证了这些类型转换(casting)的绝对无误. /******* 不使用泛型类型 ...
- 你对Java泛型的理解够深入吗?
泛型 泛型提供了一种将集合类型传达给编译器的方法,一旦编译器知道了集合元素的类型,编译器就可以对其类型进行检查,做类型约束. 在没有泛型之前: /** * 迭代 Collection ,注意 Coll ...
- Java泛型简单理解
优点1: 没有使用泛型,向list集合中添加非字符串,运行时会报错:类型不匹配 ObjectList.java: package cn.nxl2018; import java.util.ArrayL ...
- 关于Java泛型深入理解小总结
1.何为泛型 首先泛型的本质便是类型参数化,通俗的说就是用一个变量来表示类型,这个类型可以是String,Integer等等不确定,表明可接受的类型,原理类似如下代码 int pattern; //声 ...
随机推荐
- bzoj3289Mato的文件管理
bzoj3289Mato的文件管理 题意: 一共有n份资料,每天随机选一个区间[l,r],Mato按文件从小到大的顺序看编号在此区间内的这些资料.他先把要看的文件按编号顺序依次拷贝出来,再用排序程序给 ...
- bzoj3687简单题*
bzoj3687简单题 题意: 给个集合,求所有子集的元素和的异或和.集合元素个数≤1000,整个集合的元素和≤2000000 题解: 用bitset维护每个子集元素和的个数是奇数还是偶数.每次读入一 ...
- J.U.C体系进阶(二):juc-locks 锁框架
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-locks 锁框架 接口说明 Lock接口 类型 名称 void loc ...
- Python Ethical Hacking - Malware Analysis(1)
WRITING MALWARE Download file. Execute Code. Send Report. Download & Execute. Execute & Repo ...
- 微信小程序实战:app主页面保存page页面实例
先上代码. app.js //app.js App({ onLaunch: function () { // 登录 wx.login({ success: res => { if (this.g ...
- jenkins集群(四) -- 持续集成
一.jenkins配置git 1.安装源码管理器 git:http://updates.jenkins-ci.org/download/plugins/git/ 去上面的网址中把离线插件下载下来,然 ...
- F - Maximal Intersection --------暴力求解题
You are given n segments on a number line; each endpoint of every segment has integer coordinates. S ...
- springboot文件上传 流的方式 后台计算上传进度
//代码 public static void main(String[] args) throws Exception { String path = "f:/svn/t_dictiona ...
- Cypress系列(41)- Cypress 的测试报告
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 注意 51 testting 有一篇文章 ...
- PHP中interface的用处
确实,PHP 接口是有它的目的的. 它们是契约,是给其他开发人员的说明手册.然而,还是很难理解接口有什么用. 基础 接口是抽象的类,无法直接实例化,但是可被实现. 这是一个基本的例 int ...