JAVASE(十五) 泛型 :泛型用例、自定义泛型类、通配符

1、泛型在集合中的使用

1.1 在集合中使用泛型之前的例子

?

为什么要有泛型(Generic)?

1. 解决元素存储的安全性问题
2. 解决获取数据元素时,需要类型强转的问题

?

?

1.2 在集合中使用泛型例子1

        List<String> list = new ArrayList<String>();
		list.add("aaaa");
		List<Integer> list2 = new ArrayList<Integer>();
		list2.add(1111);

1.3 在集合中使用泛型例子2

        Map<String,Integer> map = new HashMap<String,Integer>();
		map.put("aaa", 20);

体会:使用泛型的主要优点是能够在编译时而不是在运行时检测错误。

2、自定义泛型类,泛型接口,泛型方法

2.1 自定义泛型类

public class Women<T> {
    T t;
}

思考?如何让子类指明父类的泛型类型
当子类继承父类时,可以直接指明父类的泛型类型,那么子类就不用再声明泛型的类型了

public class Women extends Creature<String> {}

当子类继承父类时,不直接指明父类的泛型类型,那么子类就必须声明泛型的类型

public class Women<T> extends Creature<T> {}

2.2  自定义泛型接口

public interface Buy<T> {
    public void setT(T t);
}

2.3  自定义泛型方法

public <E> E setE(E e){
	return e;
}

说明:泛型方法可以使用static修饰

3、 泛型与继承

?

示例:

public void testGenericAndSubClass() {
	Person[] persons = null;
	Man[] mans = null;
	// 而 Person[] 是 Man[] 的父类.
	persons = mans;

	Person p = mans[0];

	// 在泛型的集合上
	List<Person> personList = null;
	List<Man> manList = null;
	// personList = manList;(报错)
}

4、 通配符 - ?

4.1通配符的使用说明:

说明:        <?>是所有泛型类型的父类
读取数据:使用通配符泛型的集合能读取数据。
存数据 :   只能存储null

4.2  通配符的限制说明:

<? extends Number>     (无穷小 , Number]

只允许泛型为Number及Number子类的引用调用

<? super Number>      [Number , 无穷大)

只允许泛型为Number及Number父类的引用调用

<? extends Comparable>

只允许泛型为实现Comparable接口的实现类的引用调用

原文地址:https://www.cnblogs.com/wushaopei/p/12259540.html

时间: 2024-10-01 01:28:32

JAVASE(十五) 泛型 :泛型用例、自定义泛型类、通配符的相关文章

《JAVA编程思想》学习笔记——第十五章 泛型

在面相对象编程中,多态算是一种泛化机制. 泛型实现了参数化类型的概念. 泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性. 元组 仅一次方法调用就能返回多个对象,你应该经常需要这样的功能吧.可是return语句只允许返回单个对象.因此,解决方法就是创建一个对象,用它来持有想要返回的多个对象.例: public class TwoTuple<A,B> {} public class ThreeTuple<A,B,C> extents TwoTup

十五. 资源指标API以及自定义指标API

目录 资源指标: Metrics-Server 资源指标: Metric-Server介绍 Metric-Server部署 下载yaml文件 因为有墙, 所以提前下载image镜像, 当然也可以手动修改yaml相关文件 修改文件, 不然报错 创建Metric-Server 自定义资源指标: Prometheus k8s-prometheus-adapter 项目 Prometheus 在k8s集群中部署Prometheus github地址 需要部署的服务清单 安装部署所有服务及插件 部署kub

爪哇国新游记之十五----泛型动态数组类

import java.lang.reflect.Array; /** * 泛型动态数组类 * */ public class DynamicArray<T extends Object>{ private T[] arr; private Class<T> type; private int currCount; private static final int InitSize=2; public DynamicArray(Class<T> type){ this.

Java基础学习笔记十五 集合、迭代器、泛型

Collection 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 集合中存储的元素必须是引用类型数据 集合继承关系图 ArrayList的继承关系: 查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口.Collec

C#语法糖之第五篇: 泛型委托- Action&lt;T&gt;

因为工作的原因(其实还是个人的惰性)昨天没有给大家分享文章,然后这几天也有很多园友也提出了他们报告的意见及指导,再次感谢这些兄弟们的照顾我 和支持,这个分类的文章我当时想的是把我的学习经验和工作中用到的语法给大家分享给大家,希望能起到帮助的作用,但是本人也是个菜鸟,不是什么大神,所以 学习中也有不足的地方和没有扫到的地方,这里对上次扩展方法语法糖的问题,扩展方法确实是3.0开始就有了,或许是我以前没有用到,也没有查询欠缺,若要给大家带来不便,请大家原谅,现在把标题也修改为C#语法糖了,这里给大家

十:Java之泛型

[定义] 一.泛型的定义主要有以下两种: 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象.(这是当今较常见的定义) 在程序编码中一些包含参数的类.其参数可以代表类或对象等等.(现在人们大多把这称作模板) 不论使用那个定义,泛型的参数在真正使用泛型时都必须作出指明. 泛型类,是在实例化类的时候指明泛型的具体类型: 泛型方法,是在调用方法的时候指明泛型的具体类型. 二.使用泛型的目的: 一些强类型程序语言支持泛型,其主要目的是加强类型安全及减少类转换的次数,但一

javaSE第十五天

第十五天????117 1. 对象数组(掌握)????117 (1)定义:????117 (2)对象数组的内存图解????117 (3)案例:????117 2. 集合(Collection)(掌握)????119 (1)集合的由来?????119 (2)集合和数组的区别?????119 A:长度区别????119 B:内容区别????119 C:元素内容????119 (3)集合的继承体系结构?????119 (4)Collection的功能概述????120 (5)Collection集合的

十五天精通WCF——第九天 高级玩法之自定义Behavior

原文:十五天精通WCF--第九天 高级玩法之自定义Behavior 终于我又看完了二期爱情保卫战,太酸爽了,推荐链接:http://www.iqiyi.com/a_19rrgublqh.html?vfm=2008_aldbd,不多说,谁看谁入迷,下面言归正传, 看看这个很有意思的Behavior. 一: Behavior这个泼妇的厉害   在前面的文章中,我也清楚的说明了整个wcf通信流,而Behavior这个泼妇可以在wcf通信流中的任何地方插上一脚,蛮狠无比,利用的好,让你上天堂,利用的不

JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine

JAVA之旅(二十五)--文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine 我们继续IO上个篇幅讲 一.文本复制 读写都说了,我们来看下其他的操作,我们首先来看复制 复制原理:其实就是将C盘下的文件数据存储到D盘的一个文件中 实现的步骤: 1.在D盘创建一个文件,用于存储文件中的数据 2.定义读取流和文件关联 3.通过不断的读写完成数据的存储 关闭资源 package com.lgl.hel