JAVA 泛型的定义以及使用

泛型类

/*** <T> 为该类定义泛型,可以是一个或多个<T,...>*     定义的泛型可以在类中作为:*     类变量类型: T data*     类方法的入参以及返回类型  public void setData(T data),public T getData();次数以set,get方法举例,类的其他方法也是可以的* @param <T>* E:表示 Element,即元素,运用在集合中* K:表示 Key,即键* V:表示 Value,即值* N:表示 Number,即数值类型* T:表示 Type,即 Java 类型* ? :表示不确定的 Java 类型*/
public class Generic <T>{private String code;private String message;private T data;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}/*** 可以理解成泛型类的方法,但不能称之为泛型方法* 因为这里类定义了泛型<T> 所以该类中的方法可以使用泛型T* @return*/public T getData() {return data;}/*** 可以理解成泛型类的方法,但不能称之为泛型方法* @return*/public void setData(T data) {this.data = data;}/*** 此方法可以定义泛型类中,也可以定义在普通类中,即泛型方法不一定定义在泛型类中* <U,R> 即为为该方法定义了两个泛型U,R 定义的泛型可以作为方法的入参类型和返回类型,以及方法中的变量类型* 入参和返回类型可以是泛型或者具体的数据类型;例如testGeneric1,testGeneric2* @param u* @param r* @param <U>* @param <R>*/public <U,R> void testGeneric(U u,R r){// do something}/*** 返回类型为具体类型* @param u* @param r* @param <U>* @param <R>*/public <U,R extends Number> String testGeneric1(U u,R r){// do somethingreturn r.toString();}/*** 返回类型为泛型* @param u* @param r* @param <U>* @param <R>*/public <U,R extends Number> R testGeneric2(U u,R r){// do somethingreturn r;}
}

泛型接口

import java.util.List;/*** <I,R> 定义泛型I,R* 在该接口中可以使用泛型I,R作为接口方法的入参类型和返回值类型* @param <I>* @param <R>*/
public interface GenericService <I,R>{List<R> test1(I i);
}

泛型方法

/*** 此方法可以定义泛型类中,也可以定义在普通类中,即泛型方法不一定定义在泛型类中* <U,R> 即为为该方法定义了两个泛型U,R 定义的泛型可以作为方法的入参类型和返回类型,以及方法中的变量类型* 入参和返回类型可以是泛型或者具体的数据类型;例如testGeneric1,testGeneric2* @param u* @param r* @param <U>* @param <R>*/public <U,R> void testGeneric(U u,R r){// do something}

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

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

相关文章

岩土工程安全监测无线振弦采集仪在无线组网的关键要点

岩土工程安全监测无线振弦采集仪在无线组网的关键要点 岩土工程是一种奇特而又极其重要的工程。它涉及到土地、岩石、气候等等因素&#xff0c;需要重视安全因素。而无线振弦采集仪作为一种常用的监测设备&#xff0c;可以采集岩土工程中的振动数据&#xff0c;从而确保工程的…

智慧安防AI视频智能分析云平台EasyCVR加密机授权小tips

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

PySpark 线性回归

Spark ML 简介 Spark ML 是 Spark 提供的一个机器学习库&#xff0c;用于构建和训练机器学习模型。它提供了一系列常用的机器学习算法和工具&#xff0c;包括分类、回归、聚类、模型评估等。我们可以使用 PySpark 中的 Spark ML 来训练和评估我们的机器学习模型。 模型训练 …

Transformer模型 | Python实现基于LSTM与Transfomer的股票预测模型(pytorch)

文章目录 效果一览文章概述LSTM模型原理时间序列模型从RNN到LSTMLSTM预测股票模型实现结语程序设计参考资料效果一览 文章概述 基于LSTM与Transfomer的股票预测模型 股票行情是引导交易市场变化的一大重要因素,若能够掌握股票行情的走势,则对于个人和企业的投资都有巨大的帮…

【AntDesign】多环境配置和启动

环境分类&#xff0c;可以分为 本地环境、测试环境、生产环境等&#xff0c;通过对不同环境配置内容&#xff0c;来实现对不同环境做不同的事情。 AntDesign 项目&#xff0c;通过 config.xxx.ts 添加不同的后缀来区分配置文件&#xff0c;启动时候通过后缀启动即可。 config…

Maven教程

Maven介绍 Maven 环境配置 Maven Pom Maven 构建生命周期 Maven 构建配置文件 Maven 插件 Maven 仓库 Maven 构建Java项目 Maven 构建&项目测试 Maven 引入外部依赖 Maven 项目模板 Maven 项目文档 Maven 快照(SNAPSHOT) Maven 自动化构建 Maven 依…

6.1 C/C++ 封装字符串操作

C/C语言是一种通用的编程语言&#xff0c;具有高效、灵活和可移植等特点。C语言主要用于系统编程&#xff0c;如操作系统、编译器、数据库等&#xff1b;C语言是C语言的扩展&#xff0c;增加了面向对象编程的特性&#xff0c;适用于大型软件系统、图形用户界面、嵌入式系统等。…

【RabbitMQ 实战】10 消息持久化和存储原理

一、持久化 1.1 持久化对象 rabbitmq的持久化分为三个部分&#xff1a; 交换器的持久化。队列的持久化。消息的持久化。 1.1.1 交换器持久化 交换器的持久化是通过在声明交换器时&#xff0c; 指定Durability参数为durable实现的。若交换器不设置持久化&#xff0c;在rabb…

Vue项目中的字段格式化工具(进阶版)

场景&#xff1a; 对于一些全局公用的状态&#xff0c;或是字典&#xff0c;甚至是后端枚举&#xff0c;为了方便维护&#xff0c;我们应尽量使它们全局公用&#xff0c;但我们在开发往往会忽略这个问题&#xff0c;总想着后面再改&#xff0c;可随着项目的不断推进&#xff0c…

c语言:通讯录管理系统(文件版本)

前言&#xff1a;在大多数高校内&#xff0c;都是通过设计一个通讯录管理系统来作为c语言课程设计&#xff0c;通过一个具体的系统设计将我们学习过的结构体和函数等知识糅合起来&#xff0c;可以很好的锻炼学生的编程思维&#xff0c;本文旨在为通讯录管理系统的设计提供思路和…

将nginx注册为Windows系统服务

文章目录 1、使用nssm小工具2、使用winsw小工具2.1、下载2.2、用法2.3、重命名2.4、创建配置文件2.4.1、xml文件2.4.2、config文件&#xff08;该文件可省略&#xff09; 2.5、最终文件2.6、安装与卸载 1、使用nssm小工具 该方法最简单 首先&#xff0c;下载nssm小工具&#…

HTML5+CSSDAY4综合案例一--热词

样式展示图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>热词…

docker 基本操作

一、docker 概述 Docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的“虚拟机”。 Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自…

HomeView/主页 的实现

1. 创建数据模型 1.1 创建货币模型 CoinModel.swift import Foundation// GoinGecko API info /*URL:https://api.coingecko.com/api/v3/coins/markets?vs_currencyusd&ordermarket_cap_desc&per_page250&page1&sparklinetrue&price_change_percentage24…

机器人制作开源方案 | 齿轮传动轴偏心轮摇杆简易四足

1. 功能描述 齿轮传动轴偏心轮摇杆简易四足机器人是一种基于齿轮传动和偏心轮摇杆原理的简易四足机器人。它的设计原理通常如下&#xff1a; ① 齿轮传动&#xff1a;通过不同大小的齿轮传动&#xff0c;实现机器人四条腿的运动。通常采用轮式齿轮传动或者行星齿轮传动&#xf…

Blender:使用立方体制作动漫头像

好久没水文章 排名都掉到1w外了 ~_~ 学习一下blender&#xff0c;看能不能学习一点曲面变形的思路 一些快捷键 ctrl 空格&#xff1a;区域最大化&#xff0c;就是全屏 ctrl alt 空格&#xff1a;也是区域最大化 shift b&#xff1a;框选区域然后最大化显示该范围 shift 空…

3.springcloudalibaba gateway项目搭建

文章目录 前言一、搭建gateway项目1.1 pom配置1.2 新增配置如下 二、新增server服务2.1 pom配置2.2新增测试接口如下 三、测试验证3.1 分别启动两个服务&#xff0c;查看nacos是否注册成功3.2 测试 总结 前言 前面已经完成了springcloudalibaba项目搭建&#xff0c;接下来搭建…

AI如何帮助Salesforce从业者找工作?

在当今竞争激烈的就业市场中&#xff0c;找到满意的工作是一项艰巨的任务。成千上万的候选人竞争一个岗位&#xff0c;你需要利用一切优势从求职大军中脱颖而出。 这就是AI的用武之地&#xff0c;特别是像ChatGPT这样的人工智能工具&#xff0c;可以成为你的秘密武器。本篇文章…

【Windows】RPC调用过程实例详解

概述&#xff1a;windows 创建 RPC调用过程实例详解 参考文章&#xff1a;Remote procedure call (RPC)&#xff08;远程过程调用 (RPC)&#xff09; - Win32 apps | Microsoft Learn 文章目录 0x01、生成 UUID 和模版(IDL)文件0x02、添加 acf 文件0x03、编译 idl 文件0x04、客…

Vuex基础使用存取值+异步请求后台

目录 一、Vuex简介 1.1 定义 1.2 Vuex关键概念 1.3 使用Vuex的优势 1.4 Vuex中各个js文件的用途 1.5 Vuex各组件 1.5.1 图解 1.5.2 详解 1.6 变量传值的演变形式 二、Vuex获取值 2.1 安装 2.2 菜单栏 2.3 模块 2.4 引用 三、Vuex改变值 四、Vuex异步&请求后台…