泛型上下限

需求:定义一个函数可以接受任何类型的集合对象,只能存Integer或其父类类型数据。  //下限

    定义一个函数可以接受任何类型的集合对象,只能存Number或其子类类型数据。  //上限

泛型通配符:?

//下限

public static void print(Collection<? super Integer> c) {

}

? super Integer: 泛型的下限,只能在Integer以上

//上限

public static void getData(Collection<? extends Number> c) {

}

? extends Number: 泛型的上限,只能存Number以下。

时间: 2024-10-13 05:51:09

泛型上下限的相关文章

java 泛型上下限的例子

public static void doGenericExtends(List<? extends Goods> list) { Goods goods = new Goods(); GoodsChild goodsChild = new GoodsChild(); GoodsParent goodsParent = new GoodsParent(); // list.add(goods); compile error // list.add(goodsChild); compile er

java泛型上下限

前言: java的泛型上下限不是很好理解,尤其像我这种菜鸡.反反复复看了好几遍了...,真是... 一.简单的继承体系 class Person{} class Student extends Person{} class Worker extends Person{} 二.泛型上限(extends 关键字) public static void upperBound(List<? extends Person> list, Person p){ //正确,因为null没有类型信息 list.

泛型技术

泛型技术的介绍 这个技术是JDK5中提供的. 针对集合这类容器而言,它中可以存放任意的对象,当任何的对象存放到集合中之后,都被提升成Object类型,当我们从集合中遍历出每个对象的时候,拿到的都是Object类型,这时如果我们想使用对象自身的功能时,就需要向下转型.只要使用向下转型都可能发生ClassCastException异常. 在给集合中存放对象的时候,以Object形式存放进去的.在取出时也是Object类型,当我们在使用对象的特有方法时,进行向下转型,结果发生了异常.造成这个异常的原因

day002-List类、泛型

1. 集合 集合是容器,可以存储任意类型的数据,集合的长度可变. 1.1 集合和数组的比较 1.2 集合分类 单列集合:每次存储时,存储一个元素(Collection),包括:list.set 双列集合:每次存储时,存储两个元素(Map) 1.3 Collection 是所有单列集合的父类 1.4 单列集合的继承体系 Collection List ArrayList LinkedList Vector Set HashSet LinkedHashSet 2. Iterator迭代器 迭代说的就

泛型的上下限定义

class Info<T>{     private T var;     public T getVar(){         return var;     }     public void setVar(T var){         this.var=var;     }     public String toString(){         return this.var.toString();     } } public class GenericsDemo17 { pub

5、泛型

jdk1.5 好处: 1.将运行时的异常提前至编译时 2.避免了无谓的强转 常见应用: ArrayList<String> list = new ArrayList<String>(); // 里面存储的是String类型的数据类型 注意:泛型无多态,左右两边必须一致(推荐),或者只写一边(为向上兼容) 自定义泛型:一个数据类型的占位符或者一个数据类型的变量 1.泛型方法 : 参数化类型,将类型由原来的具体类型参数化,类型也定义为参数形式(类型形参),在使用时传入具体的类型(类型形

Java:泛型

一.序言 变化一: 在引入范型之前,Java中的类型分为原始类型.复杂类型,其中复杂类型分为数组和类:引入范型后,一个复杂类型可以细分成更多的类型. 例如,原先的List类型,现在细分成List<Object>, List<String>等更多的类型. 注:List<Object>和List<String>是两种不同的类型, 它们之间没有继承关系,即使String继承了Object.下述代码是非法的: List<String> ls = new

C#5.0泛型集合类型简述

.NET中的泛型集合 在这里主要介绍常见的泛型集合,很多时候其并发时的线程安全性常常令我们担忧.因而简述下.NET并发时线程安全特性,其详情请见MSDN. 普通集合都不支持多重并发写操作 部分支持单线程写和并发读操作 同时.NET4添加了大量并发集合 首先介绍常见的泛型集合接口,其大部分都位于System.Collection.Generic命名空间. IEnumerable<T>,其可以获取一个IEnumerator<T>迭代器,如果从数据库的角度来看,前者是表,后者是游标,同时

java泛型的理解

最近在看视频,看到比较经典的比大小问题.输入两个数,返回大的数,类型可以为int,long,float等. 通常的教程中用这个例子引入了构造函数以及重载的概念,在学习完泛型后,我想到能不能写一个泛型的方法,用以实现比较. 为了完成这个任务,我们首先需要了解一下泛型. 什么的泛型 泛型是java语言系统的一种扩展,支持创建可以按照类型进行参数化的类. 泛型的好处 泛型的好处也是显而易见的, 首先可以扩充代码的通用性,通过泛型可以使方法支持更多的类型. 泛型有助于增强类型安全,编译器可以对类型进行比