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类型的父类

  • 相关阅读:
    来深圳两月有余
    Recording Audio on Android with Examples
    How to Use the Zmanim API
    KosherJava Zmanim API / Library
    Wt, C++ Web Toolkit
    TreeFrog Framework : High-speed C++ MVC Framework for Web Application
    QDjango, a Qt-based C++ web framework
    Crow is very fast and easy to use C++ micro web framework (inspired by Python Flask)
    CivetWeb. Embedded C/C++ web server
    Tufão
  • 原文地址:https://www.cnblogs.com/shineyoung/p/10423779.html
Copyright © 2011-2022 走看看