Java泛型方法

article/2025/8/26 16:28:04

Java泛型方法


在学习Java泛型方法之前,我希望你们针对于Java泛型类有一定的了解并且可以熟练的使用。若了解并不是很详细。可以观看我写的另一篇文章 (也是我写的) Java泛型类 来了解一下。


呢么我们速度过一下泛型方法。其实泛型方法并不难理解。 我们直接上代码来演示一下。

首先我们有两个Java类,一个是存在泛型方法的类,一个是Test测试类。名称随便给都可以。

public class Param {public static <T> T param(T t) {return t;}}
public class Test {public static void main(String[] args) {String aaa = Param.param("aaa");Integer param = Param.param(1);Boolean param1 = Param.param(true);}

我们观看以上代码,不难发现。我们并没有对Param类里的param方法进行重载写法。但是他却可以传进去不同的类类型(数据类型)。就是因为我们使用了泛型方法的原因。

现在我们来拆分掉这个方法,逐步的解释一下它的结构体。

public static <T> T param(T t) {return t;
}

public 并不用过多解释,static,静态方法,为了可以通过类名称直接访问方法。重点是这几行代码

<T> T param(T t) {return t;
}

如果我们学过泛型类。呢么我们就应该知道 <T> 可以理解成泛型标识的意思。呢么我们抛开泛型标识。 正常来写我们的方法,public static 后面应该写什么。 是不是返回值类型,如果没有返回值类型就写 void。 没错吧。 呢么我们的 字母 T。 就对应了返回值类型。我们前面传入什么数据类型,呢么他就返回什么数据类型。 继续往后走。 param() 是方法名称,对应的参数 是T类型。也就是调用我这个方法的时候,传入什么。我就是什么数据类型。最后返回 t。

图解。

在这里插入图片描述

需要注意的一点是。如果我们的类也是泛型类。呢么他们的泛型标识并不冲突。依然是我们代码直接带入说明。

现在我们需要创建一个泛型类 Param<T> 并且添加一个属性,类型也是T 。写上对应的Getter和Setter方法。写上有参构造。

public class Param<T> {private T param;public Param(T param) {this.param = param;}public <T> T param(T t) {return t;}public T getParam() {return param;}public void setParam(T param) {this.param = param;}
}

呢么可能就有朋友注意到了,我们方法的泛型标识和类的泛型标识一样, 都是通过<T> 来标识的,在这里我就先告诉大家,这两个完全不冲突。谁的就是谁的。我们做个测试。

public class Test {public static void main(String[] args) {Param<String > param = new Param<>("我是一个String类型的字符串");System.out.println("type: " + param.getParam().getClass().getSimpleName() +  " value:" + param.getParam());System.out.println("---------------------------------------");Integer param1 = param.param(1123);System.out.println(param1.getClass().getSimpleName());}}

我们在测试类创建了一个Param对象并且进行了实例化。可以很清楚的看到,我们类的泛型传递的是一个String的类类型。然后我们并没有新建对象,而是继续用实例化出来的对象,调用了我们的param方法。传递进去一个Integer类型。发现并没有报错。我们通过 getClass().getSimpleName() 来获取一下他们的数据类型。得到以下结果。

type: String value:我是一个String类型的字符串
---------------------------------------
Integer
Process finished with exit code 0

可以很清楚的看到。类的泛型类型,和方法的泛型类型,完全不相干,即便是他们 泛型标识符相同 <T> 也不影响我们的正常使用。


http://chatgpt.dhexx.cn/article/aZfd5VZb.shtml

相关文章

Java方法返回值类型归纳

Java方法返回值类型归纳 我们再调用一个方法时&#xff0c;将方法体内产生的一条数据输出到方法体外使用&#xff0c;这条数据我们叫做返回值。 返回值类型分为两大类&#xff1a;第一类&#xff0c;无返回值类型&#xff1a;void。第二类&#xff0c;有返回值类型&#xff0…

java 一般方法_java有哪些方法

java有哪些方法 定义一个完整的类方法&#xff0c;需要六个步骤&#xff0c;也就是六大部分。也因为这六个部分的不同而可以大概分为9种方法。 一、一般方法 二、构造方法 三、无参无返回值的方法。 四、无参有返回值的方法。 五、有参无返回值的方法。 六、有参有返回值的方法…

java怎么返回数组_java方法怎么返回数组

java方法返回数组的方法&#xff1a;在方法前添加int[]即可返回一维的整型数组。如果在方法前添加int[][]&#xff0c;则可以返回二维的整型数组。 Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&…

java 调用方法 数组_JAVA方法与数组

一、JAVA的方法: 1、定义:a、java方法是语句的集合,它们在一起执行一个功能。 b、方法是解决一类问题的步骤的有序组合。 c、方法包含于类或对象中。 d、方法在程序中被创建,在其他地方被引用。 2、设计方法的原则:一个方法只能完成1个功能,最好保持方法的原子性。 3、语…

教妹学Java(二十四):一文了解 Java 中的方法

你好呀&#xff0c;我是沉默王二&#xff0c;CSDN 排名前十的博客专家。这是《教妹学 Java》专栏的第二十四篇&#xff0c;我们来了解一下 Java 中的方法——什么是方法&#xff1f;如何声明方法&#xff1f;方法有哪几种&#xff1f;什么是实例方法&#xff1f;什么是抽象方法…

java方法详解

java方法&#xff1a;&#xff08;method&#xff09;是将具有独立功能的代码块组织成为一个整体&#xff0c;使其具有特殊功能的代码集&#xff0c;并且能实现达到代码复用的效果 java方法包含于类或对象中&#xff08;在面向对象的时候我们就知道&#xff0c;其实类和对象是…

【Java】保姆级“方法“教学

目录 一、前言 二、方法 1、方法的概述 2、方法的定义和调用 格式1&#xff1a; 示例图1: 示例图2&#xff1a; 代码1&#xff1a; 代码2&#xff1a; 格式2&#xff1a; 修饰符访问权限范围&#xff1a; 本章主要内容&#xff1a; 3、带参数方法的定义和调用 方法定…

java方法(超详细)

一、概述 方法&#xff0c;也称函数&#xff0c;如果想要重复一段或者多段代码块的使用&#xff0c;可以将这些代码封装成一个方法&#xff0c;方法具体表现为某种行为&#xff0c;使用方法可以提高代码的复用性。 二、方法的声明 1.组成 访问权限符 返回值 方法名&#x…

【自然语言处理】3. NMT机器翻译案例实战(基于TensorFlow Addons Networks with Attention Mechanism)

NLP系列讲解笔记 本专题是针对NLP的一些常用知识进行记录&#xff0c;主要由于本人接下来的实验需要用到NLP的一些知识点&#xff0c;但是本人非NLP方向学生&#xff0c;对此不是很熟悉&#xff0c;也是因为本人对NLP灰常感兴趣&#xff0c;想扎进去好好研究研究&#xff0c;所…

使用NMT和pmap解决JVM资源泄漏问题

NMT NMT是Native Memory Tracking的缩写&#xff0c;一个JDK自带的小工具&#xff0c;用来跟踪JVM本地内存分配情况&#xff08;本地内存指的是non-heap&#xff0c;例如JVM在运行时需要分配一些辅助数据结构用于自身的运行&#xff09;。 NMT功能默认关闭&#xff0c;可以在J…

机器翻译-subword-nmt预处理语料

在机器翻译中&#xff0c;目前都采用的方法是bpe切分子词的方法来处理翻译中的未登录词。 如何使用&#xff1f; https://github.com/rsennrich/subword-nmt这里面已经写了详细的方法&#xff0c;本文主要记录我处理中英语料时的步骤。 1.共享词典 直接clone了这个项目&…

学习CANopen --- [3] NMT报文

本文主要讲述CANopen中的NMT报文&#xff0c;即网络管理&#xff08;Network ManagemenT&#xff09;&#xff0c;该服务可以用于启动网络和监控设备。 NMT报文由NMT主机发送&#xff0c;对从机进行启动、监控和重启&#xff0c;在CANopen网络中只允许有一个活动的NMT主机。如…

论文引介 | NMT with Conditional Sequence Generative Adversarial Nets

文章原名&#xff1a;Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets 作者&#xff1a;Zhen Yang, Wei Chen, Feng Wang and Bo Xu 单位&#xff1a;Institute of Automation, Chinese Academy of Sciences 译者&#xff1a;韩旭…

NMT对抗训练的三部曲

来自&#xff1a;天宏NLP 进NLP群—>加入NLP交流群 本文主要介绍NMT模型鲁棒性的相关改进工作&#xff0c;介绍一下对抗训练的三部曲&#xff0c;一作皆是ChengYong&#xff0c;分别中了2018&#xff0c;2019和2020的ACL。 第一项工作为 Towards Robust Neural Machine Tran…

手把手教你用fairseq训练一个NMT机器翻译系统

以构建英-中NMT为例&#xff0c;在linux上运行&#xff0c;fairseq版本为0.8.0 环境准备 Requirements&#xff1a; fairseq&#xff1a;pytorch包&#xff0c;包括许多网络结构&#xff0c;https://github.com/pytorch/fairseqmosesdecoder&#xff1a;机器翻译的标准数据处…

00_NMT网络管理的模块控制

目录 NMT服务 NMT错误控制 NMT 节点守护 HeartBeat Message 心跳报文 NMT Boot-up 在can网络中&#xff0c;只有主站可以发送控制信息&#xff0c;来控制从站&#xff0c;从站不需要发送对网络控制消息的响应消息。 网络管理系统负责初始化、启动及停止网络及网络中的设备…

Canopen协议 (1):网络状态管理(NMT)

工控应用中&#xff0c;常常会遇到一些设备&#xff1a;电机或者其他传感器需要通过Can 这个硬件接口来通信&#xff0c;而且往往通信协议都是走的都是Canopen协议。自己当初搞的时候对协议也是云里雾里&#xff0c;为了大家不走歪路&#xff0c;早日走上人生巅峰&#xff0c;这…

canopen学习总结(一)——NMT网络管理

[1] NMT网络管理 [1-1]概念&#xff1a; NMT到底是啥&#xff1f; 答&#xff1a;简单理解就是由一台主机来管理从机&#xff0c;主机可以控制从机的状态。 那么机器到底有哪些状态呢&#xff1f; 答&#xff1a;看下面这图&#xff0c;总共就这些状态 [1-2]命令&#xff1…

NMT

1&#xff09;刚开始时&#xff0c;在RNN的基础上引入attention&#xff0c;即将两者结合应用&#xff0c;完整解释并附上完整code。详见下链接&#xff1a; 基于RNNAttention的机器翻译 2&#xff09;接着&#xff0c;Facebook在CNN的基础上引入attention&#xff0c;参见论…

Neural Machine Translation(NMT)技术概述

在神经网络语言模型处理NLP领域&#xff0c;我做的研究一直都和文本分类相关&#xff0c;其实还有很多其他的应用领域&#xff0c;比方说&#xff1a;语言翻译、词性标注、命名实体识别等。感觉还是有必要了解一下如何用神经网络语言模型对这些应用进行建模的。因此&#xff0c…