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

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+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

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3