Java 通配符类型

Java 通配符类型

@author ixenos

  • 通配符类型

    • 通配符的子类型限定(?都是儿孙)

      • <? extends T>
      • Pair<? extends Employee> managerrr = new Pair<Manager>(ceo,cfo); //Manager是Employee子类,这里协变了(泛型的通配符类型可协变,而一般的泛型不可协变)
      • 类型Pair<? extends Employee>的方法: //?是Manager的子类们
        • void setFirst(? extends Employee) //不可调用,编译器只知道?的取值范围是儿孙,不知道具体是啥类型(?拒绝传递任何特定的类型)
        • ? extends Employee getFirst()   //可调用,返回值是可协变的,将任意Employee子类型的返回值传递给Employee引用就是协变(体现了多态性)
    • 通配符的超类型限定(?都是祖宗)
      • <? super T>
      • 类型Pair<? super Manager>的方法: //?是Manager的父类们

        • void setFirst(? super Manager) //可调用,编译器不知道具体形参是,不能调用Employee对象,因为它不一定是爸爸,但可用任意Manager对象或其子类
        • ? super Manager getFirst()   //不可调用,返回类型是开放式的爸爸,可能类中修改了也不一定,不能保证类型安全,只能返回Object

        

时间: 2024-10-06 02:43:55

Java 通配符类型的相关文章

深入理解Java注解类型(@Annotation)

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java注解类型(@Annotation) - zejian的博客 - 博客频道 - CSDN.NET zejian的博客 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &am

泛型类型限定和通配符类型限定

泛型类型变量的限定 泛型的基础知识可以参考其他教程. 如果在方法前指定了<T>,那么就是说,方法的这个泛型类型和类定义时的泛型类型无关,这个特性让泛型方法可以定义在普通类中而不是泛型类中. 我们都知道,泛型中可以限定类型变量必须实现某几个接口或者继承某个类,多个限定类型用&分隔,类必须放在限定列表中所有接口的前面.例如: [java] view plain copy print? import java.io.Serializable; /** * ICE * 2016/10/17 0

java基本类型

这近 碰到很问题,问题的根本就是自己的基础不太好,虽然已经干了很久了,还是感觉得要修修内功,内功心法是学习其他功夫的基础,基础一定要打好. java的基本数据分为四组八种: 布尔型:boolean (1/8字节)1位 字节型:char(1字节) 整数型:byte(2字节) short(2字节) int(4字节) long(8字节) 浮点型:float(4字节) double(8字节) 计算最大.最小值公式: 最小(2平方(字节数*8-1)) 最大(2平方(字节数*8-1))- 字节数*8是转化为

九、java中类型信息

一.什么是类型信息? 简单的理解 ,“类型信息”就是一种机制, java中用这种机制来实现: 在程序运行过程中发现和使用“类”信息. java的类型信息主要有两块组成:RTTI和反射. 二.什么是RTTI? RTTI,全称是Run-Time Type Information  ,名字的含义是在运行时识别一个对象的类型. 1.Class对象 java中用一个特殊的对象Class, 通过它来执行其RTTI(这是一种思想, 用一个Class来表示所有类型对象,通过具体的Class里面的属性再来区分到底

Day 2 : 变量、JAVA基本类型、运算符和表达式-1

1. 变量 1.1. 什么是变量 在日常生活中,人们会用到大量数据,像去ATM机取款,首先,需要插入银行卡,这个过程其实就是ATM机的系统在获取银行卡号这个数据,而后,输入密码,这个过程也是在获取数据,也就是密码.在后续进行的业务处理中,像存钱.取钱.转帐汇款等等,银行卡号和密码会被反复的.频繁的使用, 那就需要一个存储这些数据的地方. 在软件系统中,是将数据存储在内存之中的,而对内存中的数据的引用就是变量,可以理解为变量就是内存中数据的代词. 简单说, 变量就是指代在内存中开辟的存储空间,用于

Java 基本类型包装类

Java基本类型包装类: 基本数据类型    基本类型包装类 byte               Byte      short              Short      int                 Integer      long               Long      float               Float      double            Double      char               Character      boo

Java byte 类型的取值范围是-128~127

为什么Java byte 类型的取值范围是-128-127 : http://blog.163.com/[email protected]/blog/static/47517863200911314245752/ java基本数据类型的取值范围: http://www.cnblogs.com/singlesoar/p/5688915.html

Java基本类型与类型转换咋就这么烦?

在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型.(一个字节等于8个bit) 1.整型类型              存储需求     bit数    取值范围      备注int                 4字节           4*8 short             2字节           2*8    -32768-32767long              8字

向Java枚举类型中添加新方法

除了不能继承enum之外,可将其看做一个常规类.甚至可以有main方法. 注意:必须先定义enum实例,实例的最后有一个分号. 下面是一个例子:返回对实例自身的描述,而非默认的toString返回枚举实例的名字. public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String nam