• 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 类型的实例。

  • 相关阅读:
    图片轮显效果大全
    firefox 对WebRTC支持
    Android AES加密算法及事实上现
    怎样以学习单片机为契机,逐步成为优秀的project师
    HTML中Select的使用具体解释
    POJ 3602 Typographical Ligatures
    远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像
    blend
    POJ3187 Backward Digit Sums
    牛腩公布系统--HTTP 错误 403.14
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/12706615.html
Copyright © 2020-2023  润新知