博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java --泛型
阅读量:6814 次
发布时间:2019-06-26

本文共 1736 字,大约阅读时间需要 5 分钟。

hot3.png

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

使用自定义泛型类

public void testGeneric() {		Order
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
list1 = new ArrayList<>(); List
list2 = new ArrayList<>(); list = list1; list = list2; }

转载于:https://my.oschina.net/u/2312022/blog/751284

你可能感兴趣的文章