Java进阶学习笔记22——泛型方法、通配符和上下限

泛型方法:

 

package cn.ensource.d11_generics_method;public class Test {public static void main(String[] args) {// 泛型方法String res = test("Java");System.out.println(res);Dog dog1 = test(new Dog());System.out.println(dog1);}// 泛型方法public static <T> T test(T t) {return t;}
}

泛型方法的基本使用。

package cn.ensource.d11_generics_method;import java.util.ArrayList;public class Test {public static void main(String[] args) {// 泛型方法String res = test("Java");System.out.println(res);Dog dog1 = test(new Dog());System.out.println(dog1);// 需求:所有的汽车参加比赛:ArrayList<Car> cars = new ArrayList<>();cars.add(new BWM());cars.add(new BENZ());go(cars);ArrayList<BWM> bwms = new ArrayList<>();bwms.add(new BWM());bwms.add(new BWM());go(bwms);ArrayList<BENZ> benzs = new ArrayList<>();benzs.add(new BENZ());benzs.add(new BENZ());go(benzs);//        ArrayList<Dog> dogs = new ArrayList<>();
//        dogs.add(new Dog());
//        dogs.add(new Dog());
//        go(dogs);}// 泛型方法public static <T> T test(T t) {return t;}//public static <T extends Car> void go(ArrayList<T> a) {}
}

通配符:?在使用的时候代表一些类型。

上限

super是下限

 

通配符:

就是"?",可以在使用泛型的时候代表一切类型,E、T、K、V是在定义泛型的时候使用。

泛型的上下限:

要求:能理解、看到别人写代码就可以了。

泛型的注意事项:

泛型的擦除问题和注意事项:

泛型是工作在编译阶段的,一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。

泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。

XJad-class反编译工具:

编译阶段,底层恢复成Object类型来进行数据的处理,强转。

Java的语法知识基本上都学完了。

然后我们就开始学习API,调人家的方法来完成功能就可以了。

下面,我们的思维就要开始转换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机上制作证件照

最近由于需要给老姐弄一组证件照&#xff0c;找了一通手机上的软件&#xff0c;找到一款性价比较高的&#xff0c;详细流程记录下来。vx小程序上搜索"泰世茂证件照"&#xff0c;打开首页如下图所示∶ 单击"开始制作" &#xff0c;选择一个证件照类别&#…

Paddle 傅里叶变换基础及领域应用

Paddle 傅里叶变换基础及领域应用 1. 傅里叶变换基础 1.1 傅里叶变换简介 傅里叶变换是一种重要的信号处理技术&#xff0c;它可以将一个信号从时域转换到频域。在频域中&#xff0c;信号的频率特性更加明显&#xff0c;有利于分析和处理。傅里叶变换的基本思想是将一个信号…

基于Rsoft的Fullwave仿真模块进行双芯波导能量耦合与波分复用

Rsoft中的Fullwave仿真模块可以更精确的仿真微小结构&#xff0c;按照建立模型&#xff0c;设置参数&#xff0c;监测能量&#xff0c;优化结构的思路对其进行仿真。图1是在Fullwave模块中建立的双芯波导仿真模型。在模型中设置好折射率、光源、光路、监测器等便可以进行仿真。…

Ubtuntu下安装配置SSH详解

在Ubuntu下安装SSH并配置远程连接&#xff0c;你可以遵循以下步骤&#xff1a; 安装OpenSSH Serve sudo apt update 安装OpenSSH Server&#xff1a; 使用以下命令安装OpenSSH服务器软件包&#xff1a; sudo apt install openssh-server 安装过程可能会要求你确认操作&#x…

Spring STOMP-STOMP客户端

Spring提供了一个基于WebSocket的STOMP客户端和一个基于TCP的STOMP客户端。 首先&#xff0c;你可以创建并配置WebSocketStompClient&#xff0c;如下所示&#xff1a; WebSocketClient webSocketClient new StandardWebSocketClient(); WebSocketStompClient stompClient …

【竞技宝】英超:滕哈格命真硬!足总杯夺冠获欧联资格

足总杯决赛结束,曼联爆冷2比1击败联赛冠军曼城夺冠,滕哈格再一次用顶级理解带队拿到杯赛冠军。赛前曼彻斯特当地有媒体爆料,曼联管理层已经决定要在足总杯决赛之后解雇滕哈格,这个消息让不少球迷都很担心滕哈格的状态。但是荷兰主帅凭借强大的内心,带领球队击败了不可一世的曼城…

如何在Java中创建不可变对象?

在Java中创建不可变对象是一个常见的编程实践&#xff0c;它有助于提高代码的可读性、可维护性和安全性。以下我将从技术难点、面试官关注点、回答吸引力和代码举例四个方面来详细阐述如何在Java中创建不可变对象。 一、技术难点 在Java中创建不可变对象时&#xff0c;主要的…

买房送户口!多城加入“抢人大战”

业内人士认为&#xff0c;近期&#xff0c;多地推出的购房落户政策已区别于此前的人才落户政策&#xff0c;更聚焦于住房消费&#xff0c;降低了落户门槛&#xff0c;体现了各地对导入人口的重视&#xff0c;有利于人才流动&#xff0c;推动新型城镇化建设。 千万人口城市“后…

民宿推荐系统-手把手调试搭建

民宿推荐系统-手把手调试搭建 民宿推荐系统-手把手调试搭建

echarts配置记录,一些已经废弃的写法

1、normal&#xff0c;4.0以后无需将样式写在normal中了 改前&#xff1a; 改后&#xff1a; DEPRECATED: normal hierarchy in labelLine has been removed since 4.0. All style properties are configured in labelLine directly now. 2、axisLabel中的文字样式无需使用te…

文本处理工具grep及sed

文章目录 一、grep文本处理工具二、sed文本处理工具基本用法sed脚本格式搜索替代 一、grep文本处理工具 选项含义-color对匹配到的文本着色显示-m 次数匹配到规定的次数后停止-v显示不被命令匹配到的行,即取反-i忽略字符大小写-n显示匹配的行号-c统计匹配的行数-o仅显示匹配到…

log4j2远程代码执行

漏洞复现 漏洞复现2 这个框架不是web框架了&#xff0c;不是服务器web网站框架了&#xff0c;是java日志框架&#xff0c;就是记录日志信息&#xff0c;每一个程序都有一个日志文件&#xff0c;这个就是java里面记录日志的一个框架&#xff0c;它存在的点也是日志框架那几个代…

Java语言规范

Java程序的结构 package—0或1条&#xff0c;出现在程序最开始的地方 Import—0或1条&#xff0c;用于引入Java提供的API class—创建自定义的类&#xff0c;public修饰的class类的类名需要跟文件名完全保持一致 main方法—可执行Java程序的入口&#xff0c;具体介绍查看2.…

Flutter 中的 BackdropFilter 小部件:全面指南

Flutter 中的 BackdropFilter 小部件&#xff1a;全面指南 在Flutter中&#xff0c;BackdropFilter是一个用于创建模糊和颜色调整效果的高级小部件&#xff0c;它可以对组件背后的内容应用滤镜效果。这使得BackdropFilter非常适合实现如背景模糊、颜色混合等复杂的视觉效果。本…

[力扣题解] 463. 岛屿的周长

题目&#xff1a;463. 岛屿的周长 思路 深度优先搜索&#xff1b; 代码 Method 1 对于遍历到的一个地块&#xff0c;向四周探索&#xff0c;越界或者遇到海洋地块说明这条边需要统计&#xff1b; class Solution { private:int dir[4][2] {{1, 0}, {-1, 0}, {0, 1}, {0,…

请叙述Vue 中使用了哪些设计模式

在Vue中&#xff0c;使用了多种设计模式来构建其框架和组件系统&#xff0c;这些设计模式使得Vue具有高效、灵活和易于维护的特性。以下是Vue中常见的设计模式及其简要描述&#xff1a; MVVM&#xff08;Model-View-ViewModel&#xff09;模式&#xff1a; Vue.js是一个MVVM框架…

我用LLaMA-Factory微调大模型来实现商品评论情感分析,准确率高达91.70%

大家好&#xff0c;我是程序锅。 最近在modelscope上闲逛的时候&#xff0c;在数据集板块发现有一个商品评论情感预测数据集。这个数据集源自一个比赛&#xff0c;它的目的是为了预测电商平台顾客的评论是好评还是差评。 数据示例如下所示&#xff08;其中0代表差评&#xff…

数据库漫谈-sybase

sybase就是“system”加“database”&#xff0c;代表着信息系统的底层。Sybase公司很早就推出了关系数据库产品&#xff08;1987年5月推出的Sybase SQLServer1.0&#xff09;。Sybase也是第一个提出Client/Server 体系结构的思想&#xff0c;并率先在Sybase SQLServer 中实现。…

Go 和 Delphi 定义可变参数函数的对比

使用可变参数函数具有灵活性、重用性、简化调用等优点&#xff0c;各个语言有各自定义可变参数函数的方法&#xff0c;也有通用的处理方法&#xff0c;比如使用数组、定义参数结构体、使用泛型等。 这里总结记录一下 go、delphi 的常用的定义可变参数函数的方式&#xff01; 一…