zoukankan      html  css  js  c++  java
  • 泛型和泛型的通配符应用

    泛型以及通配符

    当使用泛型类或者泛型接口,传递的数据中,泛型的类型不确定,可以通过通配符表示<?>表示.一旦程序当中使用泛型通配符后,只能使用Object类中共性的方法. 集合中元素自身类型的方法无法使用.(这是一种多态的写法,)

    泛型作为形参写在方法参数列表内

    举个栗子:

    泛型应用在类中
    public class Pue<E>{
       private E age;
    public void set(E name){
      this.name=name;
    }
    }
    当我们使用泛型修饰一个类的时候,我们大多使用泛型来修饰成员变量和get  set方法以及构造方法
     泛型应用在方法中
    public static<E> void methods(E age){
    System.out.println(E.getClass());
    }
    当我们使用泛型修饰一个类的时候,在类的修饰符后面加上泛型的修饰符号<随意的符号就当定义变量>然后就可以在方法内使用泛型来修饰参数或者局部变量,

    备注;当我们调用了使用了带有泛型的方法或者,类,这个泛型一定会被固定.必须是确定的类型,输入的是什么参数,泛型会自动成为相同的类型.

    通配符,当我们需要对泛型进行限制的时候,java为我们提供了一个符号,通配符来对泛型进行限制,简称

    受限泛型

    受限泛型分为两种限制方式: 上限extends     下限super

    定义格式

    //定义方法 此时可以接受任意的数据类型
    public static void getElement(Collection<?> coll){//...}
    //定义方法,此时我只让方法接收数字类型 Number类型和Number的子类类型
    public static void getElement(Collection<? extends Number> coll){//....}
    //定义方法,此时我只让接收Number类型及其以上的类型
    public static void getElement(Collection<? super Number> coll){//...}

    通配符不能直接用来定义集合的数据类型,程序会混乱,并且数据类型被定义了通配符的集合无法存储任何类型的数据

    栗子:

    ArrayList<?> list= new ArrayList<>();

    上面这个集合现在无法储存任何的数据.

  • 相关阅读:
    struts2基础
    javaEE环境搭建-eclipse
    geth
    redis常用命令
    angular-ui-select 下拉框支持过滤单选多选解决方案(系列一)
    angularjs中向html页面添加内容节点元素代码段的两种方法
    modal
    弹性布局
    自定义鼠标样式
    angularjs指令弹框点击空白处隐藏及常规方法
  • 原文地址:https://www.cnblogs.com/rosiness/p/14082548.html
Copyright © 2011-2022 走看看