泛型第三课,自定义泛型、无多态、通配符、无泛型数组

2024-09-07 01:58

本文主要是介绍泛型第三课,自定义泛型、无多态、通配符、无泛型数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

泛型没有多态

package com.pkushutong.genericity4;/*** 多态的两种形式* 注:泛型没有多态* @author dell**/
public class Test01 {public static void main(String[] args) {Fruit f = new Fruit();test(new Apple());}//形参使用多态public static void test(Fruit f){}//返回类型使用多态public static Fruit test02(){return new Apple();}
}

通配符:? extends super

  1. 可以用来声明类型及声明方法参数上,不能用在声明类上
  2. ?可以接受泛型的任意类型,只能接受和输出不能修改(方法声明时参数无法正确知道具体的类型,因此不能修改)
  3. ?extends:泛型上线 <=
  4. ?super:泛型下限 >=
package com.pkushutong.genericity4;
/*** ?表示类型不定,使用时确定类型* ?的使用:声明类型,声明方法上,不能声明类或使用时* ?extends:小于等于上限,指定类型子类或自身* ?super:大于等于下限,指定类型为自身或父类* @author dell** @param <T>*/
public class Student<T> {T score;public static void main(String[] args) {Student<?> stu = new Student<String>();test(new Student<Integer>());test2(new Student<Apple>());test3(new Student<Object>());}public static void test(Student<?> stu){}//?extends:小于等于上限,指定类型子类或自身public static void test2(Student<? extends Fruit> tru){}//??super:大于等于下限,指定类型为自身或父类public static void test3(Student<? super Fruit> tru){}
}

泛型嵌套

  1. 声明:嵌套使用泛型 A<B<C>> a = new A<B<C>>();
  2. 使用:从外到内,一层层拆分,稍微复杂一些,与调用没有任何的关系,只是确定了类型而已
package com.pkushutong.genericity4;public class BjPku<T>{T stu;public static void main(String[] args) {//泛型的嵌套BjPku<Student<String>> rom = new BjPku<Student<String>>();rom.stu = new Student<String>();//从外到内拆分Student<String> stu = rom.stu;String score = stu.score;System.out.println(score);}}

泛型与数组

  1. 没有泛型数组,不能创建泛型数组
  2. 可以只有声明,可以使用?
  3. A<String>[] a1 = null;
  4. A<?>[] a2 = new A<?>[10];

jdk7泛型改进

jdk7改进:声明时指定泛型即可,创建对象不用再次编写类型

如 A<String> a = new A<>();


这篇关于泛型第三课,自定义泛型、无多态、通配符、无泛型数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143736

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Java 继承和多态的作用及好处

《Java继承和多态的作用及好处》文章讲解Java继承与多态的概念、语法及应用,继承通过extends复用父类成员,减少冗余;多态实现方法重写与向上转型,提升灵活性与代码复用性,动态绑定降低圈复杂度... 目录1. 继承1.1 什么是继承1.2 继承的作用和好处1.3 继承的语法1.4 子类访问父类里面的成

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam