文档章节

java --泛型

求是科技
 求是科技
发布于 2016/09/25 09:52
字数 462
阅读 24
收藏 1

#1.为什么要使用泛型?
1.解决元素存储的安全性问题。
在一个list钟,我本来只希望存储String类型的对象,但是没有使用泛型时,Object类对象可以存储进去。这就造成list中元素类型不一致。
2.解决获取元素数据时,需要类型强转的问题。
在如上list中获取元素数据时,很明显获取String类型时,需要强转String;获取Object元素时,需要强转Object。
使用了泛型,1.就规定了list中存放元素的类型;2.取出元素时,不需要做类型转换。

	public void testGeneric() {
		/**
		 * 不使用泛型
		 */
		List list = new ArrayList<>();
		list.add(78);
		list.add(85);
		list.add(69);
		//1.不安全元素进来了
		list.add(new String("AA"));
		for (int i = 0; i < list.size(); i++) {
			//2.强转出现问题
			int score = (int) list.get(i);
			System.out.println(score);
		}
		
		/**
		 * 使用泛型
		 */
		List<Integer> list2 = new ArrayList<>();
		list2.add(78);
		list2.add(85);
		list2.add(69);
		//不安全元素进不来
		//list2.add(new String("AA"));
		for (int i = 0; i < list2.size(); i++) {
			//2.强转出现问题
			int score = list2.get(i);
			System.out.println(score);
		}
	}

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

/**
 * 自定义泛型类
 * 
 */
public class Order<T> {
	
	private int orderId;
	private String orderName;
	private T t;
	private List<T> list;
	//用上面自定义的t
	public void add() {
		list.add(t);
	}
	//自定义泛型方法
	//传入什么类型元素,就输出什么类型元素
	public <E> E getE(E e) {
		return e;
	}
}

使用自定义泛型类

	public void testGeneric() {
		Order<String> order = new Order<>();
		order.setOrderId(1001);
		order.setOrderName("张三");
		order.setT("讲故事");
		System.out.println(order);
		
		order.setList(new ArrayList<>());
		//将order.getT()的值添加到order的list属性中
		order.add();
		System.out.println(order);
		//接收数据类型必须与传入数据类型一致
		int tmp = order.getE(123);
		System.out.println(tmp);
	}

#3.通配符

	public void testGeneric() {
		
		//这里?代表通配符
		//即可以代表任何类型
		List<?> list = null;
		List<Integer> list1 = new ArrayList<>();
		List<String> list2 = new ArrayList<>();
		list = list1;
		list = list2;
	}

© 著作权归作者所有

上一篇: java --枚举
下一篇: Tomcat --执行流程
求是科技

求是科技

粉丝 98
博文 448
码字总数 231373
作品 0
成都
后端工程师
私信 提问
Kotlin 泛型 VS Java 泛型

建议先阅读我的上一篇文章 -- Java 泛型 和 Java 泛型一样,Kotlin 泛型也是 Kotlin 语言中较难理解的一个部分。Kotlin 泛型的本质也是参数化类型,并且提供了编译时强类型检查,实际上也是伪...

JohnnyShieh
2018/06/11
0
0
提给程序员和开发者的 10 道 Java 泛型面试题

关于泛型的面试题在 Java面试中变得越来越常见,因为 Java 5问世已经有相当长的时间了,越来越多的应用已经迁移到Java 5上来了,并且几乎所有新的Java开发工作也都是在Tiger(Java 5的项目代号...

lwei
2013/10/18
13.2K
30
Cannot make a static reference to the non-stati...

今天碰到这样一些错误,Eclipse提示Cannot make a static reference to the non-static type T。代码如下: public class DAOFactory<D extends TemplateDAO<B>, B> {private static Map<Str......

开源中国驻成都办事处
2013/05/30
0
0
Java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1 概述 泛型在j...

hensemlee
2018/09/23
0
0
Java中的泛型 (上) - 基本概念和原理

下面我们来详细讨论Java中的泛型,虽然泛型的基本思维和概念是比较简单的,但它有一些非常令人费解的语法、细节、以及局限性,内容比较多。 所以我们分为三节,逐步来讨论,本节我们主要来介...

笔记12
2016/10/29
394
0

没有更多内容

加载失败,请刷新页面

加载更多

【阴阳师】真蛇10层记录

蛇切黑体系 追月神 散件一速,速度越高越好(220+) 镰鼬 招财二速,速度211以上; 山兔 火灵三速,速度180-200均可; 丑女 心眼四速,速度170左右即可; 大蛇 蚌精暴击套。速度高于阴阳师即...

Areya
17分钟前
3
0
js动态设置元素高度

this.$refs.xxx.style.height= this.contentHeight; 元素需要绑定

Carbenson
54分钟前
2
0
今天的学习

今天学到了ci框架中的查询语句的where条件语句: 1、$this->db->select('')->from('')->where('id = ??')->get()->result_array();2、$this->db->select('')->from('')->where('id', '??'......

墨冥
今天
2
0
MySQL在高并发下的订单撮合、系统使用、共享锁与排他锁保证数据一致性

前序 距离上次择文发表,两月余久。2018年也即将要结束了,目前的工作依然是与区块链应用相关的,也很荣幸在9月初受邀签约出版暂名为《区块链以太坊DApp实战开发》一书,预计在明年年初出版。...

我最喜欢三大框架
今天
2
0
深入理解Flutter多线程

该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> https://www.jianshu.com/p/54da18ed1a9e Flutter默认是单线程任务处理的,如果不开启新的线程,任务默认在主线程中处理。 ...

刘小壮
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部