JAVA泛型

泛型
在java1.5之前是没有泛型 List集合使用是Object对象。
这样任何类型数据都可以存储,取出。
但是这样写会出现两个问题:
1.当存储时,集合不会记住类型,所以当取出时也会变成 Object。
2.运行时就会强制类型转换,这样就有很大可能出现 java.lang.ClassCaseException。

泛型的好处:
1.可读性变高;
2.安全性提高,在代码编译前就会提前得知错误,而不是编译后出现,ClassCaseException。
3.优化,维护时方便。

泛型格式:
显示指定自己的类型参数将"<>"放在构造器之前
"<>"菱形放在构造器后面表示指定类型实参数

通配符
通配符的元素可以匹配任何类型。
但是不能把元素加入到集合中,因为无法匹配到元素类型。

通配符的目的是用来限制泛型的类型参数的类型,使其满足某种条件,固定为某些类。
分为:1.上限通配符;2.下限通配符

上限通配符:
使用关键字extends来实现。

  private static void upWildcard() {
        List<Dog> dogs = new ArrayList<>();
        Dogdog = new Animal();
        dog.setVoice("Woo Woo Woo");
        dog.setName("小白");
        dog.setColor("White");
        dogs.add(dog);
        animal(dogs);
    }
	 private static void animal(List<? extends Dog> dogs) {
        for (Dog dog : dogs) {
            System.out.println(dog.getVoice() + ",\n" +
                    "name = " + dog.getName() + "\n" +
                    "color = " + dog.getColor());
        }
    }

下限通配符:
使用关键字 super来实现

    private static void upWildcard() {
        List<Animal> dogs = new ArrayList<>();
        Animal dog = new Animal();
        dog.setName("小白");
        dog.setColor("White");
        dogs.add(dog);
        superAnima(dogs);
    }
    private static void  superAnima(List<? super Dog> animal){
        for (Object o : animal) {
            Dog dog = (Dog) o;
            System.out.println(dog.getVoice() + ",\n" +
                    "name = " + dog.getName() + "\n" +
                    "color = " + dog.getColor());
        }
    }
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值