zoukankan      html  css  js  c++  java
  • Java泛型(1)泛型基本概念 通配符? 上限extends 下限super

    泛型方法

    • 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的
    • 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
    • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。

    如何使用泛型方法打印不同类型的元素

    public class GenericMethod {
        // 泛型方法 print
        public static <E> void printArray(E input) {
            // 输出泛型元素
            System.out.printf("%s ", input);
        }
    
        public static void main(String args[]) {
            // 不同类型: Integer, Double 和 Character
            Integer intE = 1;
            Character charE = 'A';
    
            System.out.println("整型元素为:");
            printArray(intE); // 传递一个整型
    
            System.out.println("
    字符型元素为:");
            printArray(charE); // 传递一个字符型元素
        }
    }
    
    

    泛型类

    • 普通类的声明:
    class NormalClass{
    .....
    }
    
    • 在类名后面添加了类型参数声明部分
    class GenericClass<E>{
        private E ele;
        public E set(E e){
            this.ele=e;
        }
    }
    

    泛型通配符?

    类型通配符一般是使用?代替具体的类型参数。例如 List<?> 在逻辑上是List,List.... 等所有List<具体类型实参>的父类。

    有界的泛型类型

    类型通配符上限extends

    class clazz {
        //定义一个泛型方法
        public static <T extends Number> T extendsMethod(T x,T y){
            y=x;
            return y;
        }
        
        //测试泛型方法
        public static void testExtendsMethod(){
            Integer x=0;
            Double y=1.0;
            System.out.println(extendsMethod(x,y));
            
            String str1="a";
            Integer integer=1;
            System.out.println(extendsMethod(str1,integer));//报错
        }
    }
    

    extends 表示泛型T应该是Number的子类(Integer、Short、Long、Float、Double),也就是规定了T的上界

    类型通配符下限super

    如果把上述方法testExtendsMethod中的extends改成super,会报错Unexpected token,暂时没有找到原因

    TOTO
    

    下面是可以用的:
    类型通配符下限通过形如 List<? super Number>来定义,表示类型只能接受Number及其三层父类类型,如 Object 类型的实例。

  • 相关阅读:
    多态
    重载 特点
    java 测量运行时间 单位:毫秒
    java 源代码 二分查找 Arrays
    java 同步 synchronized
    云服务器,价格其实不便宜,但为什么还要用呢
    网站访问优化(二):开启apache服务器gzip压缩
    CXF整合Spring开发WebService
    网站访问优化,未完待续
    网站访问优化,未完待续
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/12706615.html
Copyright © 2011-2022 走看看