zoukankan      html  css  js  c++  java
  • 通配符

    当我们在编程的时候经常会用到传递,当传递过程中有多种数据类型的时候,我们可以采用通配符来解决这样的问题。
    下面的程序中的fun方法中 <?>可以接收任何类型的泛型类型,那么在传递的过程中就不用担心数据传递异常的情况。

    class Info<T>{
     private T var;
     public void setName(T var){
      this.var = var;
     }
     public T getName(){
      return this.var;
     }
     public String toString(){
      return this.var.toString();
     }
    }
    public class GenericsDemo3 {
    public static void main(String[] args) {
     Info<String> i1 = new Info<String>();
     i1.setName("张三");
     fun(i1);
     
    }
     public static void fun(Info<?> temp){
     System.out.println(temp);
    }
    }

    泛型可以指定接收的上限和下限
    确定泛型的接收上限用extends + 类名的方法
    确定泛型的接收下限用super + 类名的方法

    泛型的上限确定:
    class Info2<T>{
     private T var;
     public void setName(T var){
      this.var = var;
     }
     public T getName(){
      return this.var;
     }
     public String toString(){
      return this.var.toString();
     }
    }
    public class GenericsDemo4 {
    public static void main(String[] args) {
     Info2<Integer> i1 = new Info2<Integer>();
     i1.setName(10);
     fun(i1);
     
    }
     public static void fun(Info2<? extends Number> temp){
     System.out.println(temp);
    }
    }
    设置下限:
    public static void fun(Info2 <? super String> temp){};

    说明:
    1.在设置泛型的上下限的过程中需要注意的就是在传递的时候的类型是不是在设置的范围内;
     如果设置的上限为Number,则只能接收Integer、Float类型的数据类型
     如果设置的下限为 String,则只能接收Sting或者Object类型的数据类型
    2.虽然在多态中String是Object类型的子类,可以继承并且使用父类的所有方法,但是在泛型中却不是这样
     即Info<String> 不能用Info<Object>来接收数据,他们是两个不同的概念,因为String的范围要比Object小。


     

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Vmware 添加虚拟磁盘
    2019-2020-2 《网络对抗技术》 Exp3 免杀原理与实践
    Docker 容器更换软件源
    Docker 查看容器 Linux 版本
    OpenMediaVault 5 进阶配置(四) Portainer 管理 Docker
    Portainer 中文文档:部署
    树莓派 部署 Docker 数据库容器
    通过Cookie统计上次网页访问时间
    用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)
    删掉双系统
  • 原文地址:https://www.cnblogs.com/penggy/p/4786507.html
Copyright © 2011-2022 走看看