`

Java核心技术对泛型设计的总结(1) 通配符

阅读更多

Java 通配符主要用来解决泛型设计中类型约束中继承概念所导致的限制,原因则是 Java 泛型中,可以为各种容器和集合来添加类型约束用来获取类型检查功能避免导致错误的类型再程序运行时才会被发现出来。但是却有产生了一些另人烦恼的限制,比如为了保证类型的安全一个 Pair<Employee> 对象是一个 Pair<Manager> 将不会有任何关联,也就是说不能将 Pair<Employee> Pair<Manager> 指向同一个引用,(当然如果说声明了 Pair<Employee> 对象需要把 1 Manager 对象存储到其中这样子是可以允许的不会出现错误,因为毕竟 1 Manager 也是 1 Employee )。所以在这种情况下就需要使用通配符来放宽这样的限制

通配符可以用来实现以下 2 个语法 <? Super Manager> <? Extends Employee> 前者的含义为保存在容器中的对象可以为 Manager 的任何父类,或者是任何 Manager 实现的接口。

而后者则相反为必须继承了 Employee 的子类或者是实现了 Employee 的子类型。而这 2 个语法各支持 1 种操作, <? Super Manager> 支持对数据域的修改,而 <? Extends Employee> 则支持对数据域的访问,上面这 2 个功能个人感觉可以用面向对象程序设计中的继承和多态来解释和理解。个人理解的含义就是如果使用 <? Super Manager> 父类中的数据域同时也会在子类中拥有,所执行提供参数的功能时不会出现任何问题,也就是说不会出现访问一个在父类中不存在的数据域的情况,而如果使用 <? Extends Employee> 子类中包含了父类的所有数据域所有可以实现访问的功能。

 

总之对这 2 个语法的理解可以为,父类限定通配符可以向泛型对象进行写入,而子类限定通配符则可以向泛型对象读取。

 

最后通配符的一个应用的语法可以为 Employee<?> ,该语法虽然形式上可能和不带泛型的对象相同,但是任何时 Employee<?> 都要比不带泛型的对象要更好,同时在一些简单的情况下使用这样的语法可以实现一些比使用普通语法更简便和可读性更强的版本

分享到:
评论

相关推荐

    【java核心技术】泛型设计

    目录一、泛型概述二、泛型定义(1)泛型类(2)泛型方法2.1 泛型可变参数(3)泛型接口(4)类型限定三、泛型使用(1)类型通配符1.1 上限1.2 下限四、泛型擦除五、泛型数组 一、泛型概述 泛型,即是参数化类型。在...

    Java 基础泛型.pdf

    Java泛型的核心思想是类型参数化,即在类、接口或方法的定义中使用类型参数来代替具体的类型,这些类型参数在实例化时被具体类型替换,从而实现了通用性和类型安全。 主要特性包括 1. 类型参数:在类、接口或方法的...

    Java2核心技术.part5

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java 基础核心总结 +经典算法大全.rar

    《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...

    「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识 准备 Java 面试,首选.zip

    泛型&通配符详解 Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结 : Java 集合常见知识点&面试题总结(上) (必看 ) Java...

    「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识

    泛型&通配符详解 Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结: Java 集合常见知识点&面试题总结(上) (必看 ) Java ...

    Java2核心技术.part1

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6...

    Java2核心技术.part3

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java2核心技术.part6

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java2核心技术.part4

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java2核心技术.part2

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java中高级核心知识全面解析(精华必看)

    1.Java 基本功 1.1.Java 入门(基础概念与常识) 1.1.1.Java 语言有哪些特点? 1.1.2.关于 JVM JDK 和 JRE 最详细通俗的解答 1.1.2.1.JVM 1.1.2.2.JDK 和 JRE 1.1.3.Oracle JDK 和 OpenJDK 的对比 1.1.4.Java 和 C++...

    廖雪峰 Java 教程.doc

    Java核心类 字符串和编码 StringBuilder StringJoiner 包装类型 JavaBean 枚举类 BigInteger BigDecimal 常用工具类 异常处理 Java的异常 捕获异常 抛出异常 自定义异常 使用断言 使用JDK Logging ...

    java核心知识点整理.pdf

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM .........................

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

    procyon:Procyon是一套Java元编程工具,包括一个丰富的反射API,一个用于运行时代码生成的LINQ风格的表达式树API和一个Java反编译器。

    Procyon是一套Java元编程工具,专注于代码生成和分析。 它包括以下库: ... 它基于.NET的System.Reflection和System.Reflection.Emit API,旨在解决Java核心反射API的许多缺点,这些缺点为泛型类型检查提供

    java反编译工具源码-procyon:Procyonjavadecompiler-Procyon是CanisMinor中的一个双星系统

    API,完全支持泛型、通配符和其他高级 Java 类型概念。 它基于 .NET 的System.Reflection和System.Reflection.Emit API,旨在解决核心 Java 反射 API 的许多缺点,后者为泛型类型检查提供了相当有限且繁琐的支持。 ...

Global site tag (gtag.js) - Google Analytics