OCJP之泛型 尚未搞定 如有好的资源 请推荐。。。

泛型可以加到类、方法中,作用域不用

1 范型最基本的应用

    规定指定容器存放元素的类型,如果不按照事先规定的类型存放,直接会报Compilation error

import java.util.*;

class Snake {
	static List<String> s1 = new ArrayList<String>();
}

public class Chips extends Snake {
	public static void main(String[] args) {
		List c1 = new ArrayList();
		s1.add("1"); s1.add("2");
		c1.add("3"); c1.add("4");
		getStuff(s1, c1);
	}
	static void getStuff(List<String> a1, List a2) {
		for(String s1: a1) System.out.print(s1 + " ");
//		Below for-each cannot be compiled; a2 stored Object, cannot be converted to String;
//		for(String s2: a2) System.out.print(s2 + " ");
	} 
}


2 泛型编译与运行

    编译时看类型,运行时找对象....泛型编译时,自动擦除,不会报编译错误,只会有警告...

package com.ocjp.generic;

 import java.util.*;
 public class Salt {
	 
	public static void main(String[] args) {
		 Set s1 = new HashSet();
		 s1.add(0); // int放到了 Set s1;但是int被当成Object;
		 s1.add("1");  // String放到了 Set s1;但是String被当成Object;
//		 调do2()时,将Object的Set传给了有约束的Set<Number>,编译时,泛型擦除;这样写是可以的。
		 doStuff(s1);
	}
	 
	static void doStuff(Set<Number> s) {
		 do2(s);
	
		Iterator i = s.iterator();
		while(i.hasNext()) System.out.print(i.next() + " ");
		
		Object[] oa = s.toArray();
		 
		for(int x = 0; x < oa.length; x++)
			 System.out.print(oa[x] + " ");
		
		System.out.println(s.contains(0)); //true; 只有数字0,contains()本质也是调用的Integer.euqals();
		System.out.println(s.contains("0")); //false;
		System.out.println(s.contains("1")); //true;只有字符串1,contains()本质也是调用的String.euqals();
		
	}
	 
	 static void do2(Set s2) { System.out.print(s2.size() + " "); }
 }

Output:

2 0 1 0 1 true
false
true


3 通配符


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值