泛型

来源:互联网 发布:淘宝土特产店铺简介 编辑:程序博客网 时间:2024/05/20 22:35
    /*     A:泛型概述
         * B:泛型好处
             * 提高安全性(将运行期的错误转换到编译期)
             * 省去强转的麻烦
         * C:泛型基本使用
             * <>中放的必须是引用数据类型
         * D:泛型使用注意事项
             * 数组和泛型前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)  
             泛型一般不定义成Object  没意义
    */
        //demo1();
    
        
    }

    public static void demo1() {
        ArrayList<Person> list = new ArrayList();
        //list.add("a");
        //list.add(100);
        list.add(new Person("张三",23));
        list.add(new Person("李四",24));
        //list.add(true);
        Iterator<Person> s = list.iterator();
        while (s.hasNext()) {
            //System.out.println(s.next());
            Person c =s.next();//向下转型
            System.out.println(c.getAge()+"    "+c.getName());
            //next 方法只能调用一次  调用多次就会将指针向后移动多次
        }

    }

泛型遍历数组

        //demo1();
        ArrayList<Person> list = new ArrayList<>();
        list.add(new Person("李四",23));
        list.add(new Person("张三",23));
        list.add(new Person("王五",23));
        list.add(new Person("赵六",23));
        Iterator<Person> s =list.iterator();
        while (s.hasNext()) {
            Person c =s.next();//用person记录每个元素
            System.out.println(c.getAge()+"   "+c.getName());
            
        }
    }

    public static void demo1() {
        ArrayList<String> list  = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        Iterator<String> s =list.iterator();
        while (s.hasNext()) {
            System.out.println(s.next());
        }
    }
/* A:案例演示
            * 泛型的由来:通过Object转型问题引入
            * 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
*/
        //demo1();
        Tool<String> t = new Tool<>();
        t.show("abc");
        
    }

    public static void demo1() {
        Tool<Student> t =new Tool();//创建工具栏对象
        t.setObj(new Student("张三",23));
        
        //Worker w =(Worker)t.getObj();//向下转型
        //System.out.println(w);
    }
 /*A:泛型接口概述
            * 把泛型定义在接口上
        * B:定义格式    
            * public interface 接口名<泛型类型>
        * C:案例演示
            * 泛型接口的使用*/
    }

}

//第一种
    interface Inter<T>{
    public void show(T t);
        
}/*
    class Demo implements Inter<String>{   //推荐第一种
        public void show(String t){
            
            System.out.println(t);
        }
    }
*/

//第二种
class Demo<T> implements Inter<T>{  //没有必要再实现接口的时候在自的类加泛型
    public void show(T t){
        
        System.out.println(t);
    }

/* A:泛型通配符<?>
            * 任意类型,如果没有明确,那么就是Object以及任意的Java类了
        * B:? extends E
            * 向下限定,E及其子类
        * C:? super E
            * 向上限定,E及其父类
*/
    List<?> list =new ArrayList<String>();//当右边的泛型是不确定时可以使用?号
     ArrayList<Person> list1 =new ArrayList<>();
     list1.add(new Person("李四",23));
    list1.add(new Person("张三",23));
    list1.add(new Person("王五",23));
    list1.add(new Person("赵六",23));
    ArrayList<Student> list2 =new ArrayList<>();
    list1.add(new Person("李四",24));
    list1.add(new Person("张三",25));
    list1.add(new Person("王五",26));
    list1.add(new Person("赵六",27));
    list1.addAll(list2);
    System.out.println(list1);
    
    }


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电信手机话费充多了怎么办 微信钱包提现提错银行卡怎么办 qq余额提现不了怎么办 qq钱包充错话费了怎么办 苹果账户扣了钱怎么办 苹果平板冲不进去电怎么办 qq红包输了钱怎么办 qq红包实名认证没有银行卡怎么办 扣扣红包发不了怎么办 qb充错账号了怎么办 q币冲错了号了怎么办 微信qb冲错号码怎么办 微信qb冲错了怎么办 qb冲到小号了怎么办 无意中充了q币怎么办 在绝地求生里打不开充值页面怎么办 电脑版迷你世界打不开怎么办 电脑的腾讯视频打不开怎么办 好多程序连不上网了怎么办 掌游宝炉石传说卡组复制不了怎么办 花呗不能充话费怎么办 想用话费充王者怎么办 苹果6s激活出错怎么办 联通话费充多了怎么办? 电信宽带充值充到别人账号了怎么办 未实名的支付宝钱转不出来怎么办 手机打游戏闪屏怎么办 支付宝手机冲错怎么办 手机停用了支付宝充值码怎么办 苹果手机桌面上找不到支付宝怎么办 苹果手机支付宝找不到了怎么办 微信上充话费没到账怎么办 冲q币不到账怎么办 支付宝冲话费没到帐怎么办 qq实名认证没有银行卡怎么办 微信零钱限额没有银行卡怎么办 qq钱包忘记支付密码怎么办 零钱包密码忘了怎么办 关爱通密码知道卡号忘了怎么办 卡号的密码忘了怎么办 银行卡号密码忘了怎么办