zoukankan      html  css  js  c++  java
  • Java 泛型

    Java泛型要解决的问题

    类型安全 泛型的主要目标是实现java的类型安全。 泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一个高的程度上验证这个类型 解决ClassCastException

    消除了强制类型转换 使得代码可读性好,在编译阶段就能发现错误,而不是等到运行才发现错误

    Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

    Java泛型的典型例子

    List<T>

    T可以是Integer,也可以是String,但必须是引用对象,不可以是基本类型。

    比如List<String> 那么编译时候编译器就知道里面的元素都是String类型,如果不是,会报错。

    泛型有三种使用方式 泛型接口 泛型类 泛型方法

    泛型接口

    设置泛型接口,子类负责实现,子类可以选择继续泛型也可以直接定义泛型具体类型(比如String,Integer)

    泛型方法

    泛型标记写在方法里就可以被叫做泛型方法,不一定要在泛型类中

    泛型中<T> <?>的区别

    public static void test(){
       List<Student> list1 = new ArrayList<>();
       list1.add(new Student("zhangsan",18,0));
       list1.add(new Student("lisi",28,0));
       list1.add(new Student("wangwu",24,1));
       //这里如果add(new Teacher(...));就会报错,因为我们已经给List指定了数据类型为Student
       show1(list1);
    
       System.out.println("************分割线**************");
    
       //这里我们并没有给List指定具体的数据类型,可以存放多种类型数据
       List list2 = new ArrayList<>();
       list2.add(new Student("zhaoliu",22,1));
       list2.add(new Teacher("sunba",30,0));
       show2(list2);
    }
    • <? extends T> 是指   “上界通配符(Upper Bounds Wildcards)
    • <? super T> 是指  “下界通配符(Lower Bounds Wildcards)

    <? extends X>

    那么元素可以是X类型及X类型的子类

    <? super X>

    那么元素可以是X类型及X类型的父类

  • 相关阅读:
    新概念 Lesson 2 Sorry, sir.
    记一次无法正常本地登陆Linux服务器(确定密码正确)
    English trip -- VC(情景课)5 D
    新概念 Lesson 1 Excuse me!
    English trip -- VC(情景课)5 C It's on Main Street 在主街上
    English trip -- Iris老师整理的一般时态
    English trip -- VC(情景课)5 B Places around town 城市设施
    English trip -- VC(情景课)5 Around Town
    Ploya定理学习笔记
    莫比乌斯反演学习笔记
  • 原文地址:https://www.cnblogs.com/shineyoung/p/10423779.html
Copyright © 2011-2022 走看看