【Java学习】通配符?

面向对象系列八:泛型(二)

一、通配符?

二、泛型符<>

1.泛型类里

2.泛型类外

2.1使用过程中

2.2使用最后末

三、限制

1.泛型类里的限制

2.延申处的限制

2.1extend限制上界

2.1.1返回值接

2.1.2形参传

2.2super限制下界

2.2.1形参传

2.2.2返回值接


这是泛型初阶的详解:【Java学习】泛型

一、通配符?

++泛型,是对类里面的 一套类型的 广泛设定++ ,如果要延申其泛型 到类外 使用此泛型类 的过程中 去,就用通配符? 延申其泛型,但泛型不管如何延申,到最后的使用末处 都是一样必须给它++指定具体类型 来具体实现++的


二、泛型符<>

1.泛型类里

泛型类里 就是对这个泛型类的 泛型信息的定义,泛型类里面的 泛型符<> 装的就是 泛型类型的代符 ,++就算写 具体已实现有的类型Integer,也是将Integer视为 泛型代符的名字++


2.泛型类外

泛型类外 就是对这个泛型类的使用了:

2.1使用过程中

在泛型类外 使用过程中 延申泛型的通配符处 泛型符<>装的就是 对此泛型类的泛型类型的 进一步限制定义


2.2使用最后末

在泛型类外 使用最后末处 泛型符<>装的就是 对泛型类的 指定具体实现类型


三、限制

1.泛型类里的限制

在泛型类里面 就可以有 对其泛型类型的限制,泛型类里面的限制 会影响到 泛型类从定义到使用 的整个过程中


2.延申处的限制

而这里讲的是 在延申泛型处的 对泛型的限制,延申处开始的限制 则会影响的是 泛型类使用处(过程中与最后末)

java 复制代码
class Food {
}
class Fruit extends Food {
}
class Apple extends Fruit {
}
class Banana extends Fruit {
}

class GenClass<T> {//泛型类GenClass
    private T plate;
    public T getPlate() {
        return plate;
    }
    public void setPlate(T plate) {
        this.plate = plate;
    }
}

2.1extend限制上界

java 复制代码
class TestDemo {//泛型类外 使用处
    void fun(GenClass<? extends Fruit> Greatemp) {//使用过程 延申继续泛型,限制了其 泛型类型的上界
        //实例对象Greatemp 它里面泛型方法的返回值限制了上界,可对它用 上界及以上 向上转型接
        Fruit fruit = Greatemp.getPlate();//Fruit上界
        Food food = Greatemp.getPlate();//Food上界以上
    }
}
  • 泛型类GenClass里面的 泛型类型? 是继承于Fruit
  • 在使用过程的此时 泛型类GenClass创建出实例对象Greatemp,它此时使用的类 里面的一套泛型类型 都是继承于上界Fruit

---> 实例类用的 ++方法的形参类型++ 、++方法返回值类型++ 都是Fruit或Fruit下面未知的++子类++

2.1.1返回值接

方法的返回值 设置的是Fruit子类,就可以用Fruit++向上转型++接收 ,实现使用过程中 对类实例对象数据的读取


2.1.2形参传

方法的形参 设置的类型是Fruit子类,就不可以调用传Fruit 去++向下转型++


2.2super限制下界

java 复制代码
class TestDemo {//泛型类外 使用处
    void fun(GenClass<? super Fruit> Greatemp) {//使用过程 延申继续泛型,限制了 其泛型类型的下界
        //实例对象Greatemp 里面泛型方法的形参限制了下界 可对它用 下界及以下 向上转型传
        Greatemp.setPlate(new Fruit());//Fruit下界
        Greatemp.setPlate(new Apple());//Apple下界以下
    }
}
  • 泛型类GenClass里面的 泛型类型? 的子类是Fruit
  • 在使用过程的此时 泛型类GenClass创建出实例对象Greatemp ,它此时使用的类 里面的一套泛型类型 都是在下界Fruit的上面

---> 实例类用的 ++方法的形参类型++ 、++方法返回值类型++ 都是Fruit或Fruit上面未知的++父类++

2.2.1形参传

方法的形参 设置的类型是Fruit父类,就可以调用传Fruit实现向上转型 ,实现使用过程中 对类实例对象数据的写入


2.2.2返回值接

方法的返回值 设置的类型是Fruit父类,就不可以用Fruit++向下转型++接收

相关推荐
渡我白衣几秒前
运筹帷幄——在线学习与实时预测系统
人工智能·深度学习·神经网络·学习·算法·机器学习·caffe
好家伙VCC几秒前
**InfluxDB实战进阶:基于Golang的高性能时序数据采集与可视化方
java·开发语言·后端·python·golang
ZhiqianXia几秒前
PyTorch学习笔记(16):scheduler.py
pytorch·笔记·学习
斌味代码1 分钟前
Java SpringBoot 微服务实战:企业级架构设计与性能调优完全指南
java·spring boot·微服务
好家伙VCC2 分钟前
**发散创新:基于Go语言的服务网格实践与流量治理实战**在微服务架构日益复杂的今天,**服务网格(S
java·python·微服务·架构·golang
一定要AK8 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao8 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
AI成长日志8 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
KevinCyao8 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
迷藏4949 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源