A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pzfpang449 中级黑马   /  2013-1-23 17:41  /  1011 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 pzfpang449 于 2013-1-24 10:03 编辑

泛型需要注意事项
1,使用泛型时,泛型类型必须为引用类型,不能是基本数据类型
2,泛型时提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源码级别上,既挡住向集合中插入非法数据。但编译器编译带有泛型的java程序后,生成的class文件中奖不再带有泛型信息,这个过程称之为“擦除“。
例子如下
package com.itcast;

import java.util.ArrayList;

public class fanxing {
        @Test
        public void test1(){
                List<String> list=new ArrayList<String>();
                list.add("aa");
                list.add("bb");
                list.add("cc");
                //传统
                Iterator<String> it=list.iterator();
                while(it.hasNext()){
                        String value=it.next();
                        System.out.println(value);
                }
               
        }
        @Test
        public void test2(){
                Map<Integer,String> map=new LinkedHashMap<Integer,String>();
                map.put(1, "aa");
                map.put(2, "bb");
                map.put(3, "cc");
        /*        Set<Map.Entry<Integer, String>> set= map.entrySet();
                Iterator<Map.Entry<Integer, String>> it= set.iterator();
                while(it.hasNext()){
                        Map.Entry<Integer, String>  entry=it.next();
                        Integer key=entry.getKey();
                        String value=entry.getValue();
                        System.out.println(key+":"+value);
                }*/
                //增强for,常用
                for(Map.Entry<Integer, String> entry:map.entrySet()){
                        Integer key=entry.getKey();
                        String value=entry.getValue();
                        System.out.println(key+":"+value);
                }
        }

}
结果为
1:aa
2:bb
3:cc
自定义泛型
1,类上声明的泛型,作用到类中的所有方法
2,静态成员无效,需要单独声明
public static <T> void c(T t){}

1,编写一个泛型方法,实现指定位置上的数组的元素的交换
        //编写一个泛型方法,实现指定位置上的数组的元素的交换
        public <T> void test(T arr[],int post1,int post2){
                        T temp=arr[post1];
                        arr[post1]=arr[post2];
                        arr[post2]=temp;
                        
        }
2,        //编写一个泛型方法,接受一个任意数组,并颠倒数组中的所有元素
        public <T> void test(T arr[]){
                int start = 0;
                int end = arr.length;
                while (true) {
                        if (start >= end) {
                                break;
                        }
                                T temp = arr[start];
                                arr[start] = arr[end];
                                arr[end] = temp;
                                start++;
                                end--;
                        
                }


点评

论坛要求实名注册的,这里改下名字吧:http://bbs.itheima.com/thread-31067-1-1.html  发表于 2013-1-23 18:53
对于课堂笔记,请选择已解决。另外注意看下版规,会促使你更快的得到技术分  发表于 2013-1-23 17:44

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 鼓励下吧

查看全部评分

1 个回复

倒序浏览
好人那,祝您新年快乐、工作顺利、事业、学业蒸蒸日上!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马