形参化类 ‘Result‘ 的原始使用

  1. 在编程中,特别是在面向对象编程(OOP)中,当我们说“形参化类”或“参数化类”,我们实际上是指泛型(Generics)的概念。泛型允许在定义类、接口和方法时使用类型参数。这样,你可以创建可重用的组件,这些组件可以支持多种数据类型而无需为每种类型单独编写代码。
  2. 假设你有一个名为 Result 的类,它可能用于表示某种操作的结果。这个类可能有一个值和一个状态或错误消息。如果你想要这个类能够处理多种数据类型的结果,你可以使用泛型来定义它。
  3. 下面是一个简单的 Result 类的泛型版本示例:
public class Result<T> {  private T value;  private String errorMessage;  private boolean isSuccess;  public Result(T value, boolean isSuccess) {  this.value = value;  this.isSuccess = isSuccess;  this.errorMessage = isSuccess ? null : "Operation failed";  }  public T getValue() {  return value;  }  public String getErrorMessage() {  return errorMessage;  }  public boolean isSuccess() {  return isSuccess;  }  
}

在这个例子中,Result 类使用了一个类型参数 T,它表示 value 字段可以持有的任何类型。你可以这样使用这个类:

// 创建一个包含 String 类型结果的 Result 对象  
Result<String> stringResult = new Result<>("Hello, World!", true);  
System.out.println(stringResult.getValue()); // 输出 "Hello, World!"  // 创建一个包含 Integer 类型结果的 Result 对象  
Result<Integer> integerResult = new Result<>(42, true);  
System.out.println(integerResult.getValue()); // 输出 42

形参化类(或泛型类)的原始使用是指在没有指定类型参数的情况下使用泛型类。在 Java 中,如果你使用了一个泛型类但没有提供类型参数,编译器会将其视为原始类型。例如:

Result rawResult = new Result(new Object(), true); // 原始类型使用

在这个例子中,Result 被用作了原始类型,因为没有提供类型参数。这通常是不推荐的,因为它失去了泛型提供的类型安全性。编译器会发出一个未经检查的转换警告,因为原始类型 Result 可以接受任何类型的对象作为值,这可能导致运行时错误。

为了避免这种情况,最好总是使用具体的类型参数来实例化泛型类,以充分利用类型安全和代码重用的好处。

在使用形参化类 Result 之前,需要先定义该类。下面是一个示例:

public class Result<T> {private T value;public Result(T value) {this.value = value;}public T getValue() {return value;}public void setValue(T value) {this.value = value;}
}

在这个示例中,Result 是一个形参化类,使用了类型参数 T。这个类有一个私有字段 value,表示结果的值。类中还包含了一个构造函数和相应的 getter 和 setter 方法。

下面是如何使用 Result 类的示例:

public class Main {public static void main(String[] args) {Result<Integer> result1 = new Result<>(10);System.out.println(result1.getValue()); // 输出: 10Result<String> result2 = new Result<>("Hello");System.out.println(result2.getValue()); // 输出: HelloResult<Boolean> result3 = new Result<>(true);System.out.println(result3.getValue()); // 输出: true}
}

在这个示例中,首先创建了一个 Result 对象 result1,其类型参数 T 被设置为 Integer,并且值被设置为 10。然后使用 getValue() 方法获取结果的值并输出。

类似地,还创建了两个 Result 对象 result2result3,分别设置了类型参数 TStringBoolean,并且分别输出了结果的值。

 

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

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

相关文章

量化投资实战(三)之配对交易策略--协整模型法

点赞、关注&#xff0c;养成良好习惯 Life is short, U need Python 量化投资实战系列&#xff0c;不断更新中 1. 初识配对交易策略 配对交易&#xff08;Pairing Trading&#xff09;是指八十年代中期华尔街著名投行Morgan Stanley的数量交易员Nunzio Tartaglia成立的一个数量…

springboot+xjar加密打包部署教程

需求背景 为了跟上时代的步伐&#xff0c;为了更好的生存。开个玩笑&#xff0c;就是心血来潮&#xff0c;使用xjar加密部署jar包&#xff0c;于是就测试一下。 xjar教程 1-maven配置文件修改 首先找到自己ideal配置的maven文件夹&#xff0c;然后找到apache-maven-3.9.3\co…

微信小程序可拖拽视频播放案例

微信小程序可拖拽视频播放案例 如图所示 使用原生小程序组件 movable-area movable-view 注意movable-view必须在area内 官方组件地址 wxml <movable-area class"movableArea"><movable-view class"movableView" out-of-bounds"false&q…

SRS服务器ffmpeg 推流rtmp超时中断

ffmpeg错误显示 failed to update header with correct duration failed to update header with correct filesize. Error writing trailer of rtmp://----- broken pipe SRS日志错误显示 serve error code2056 kickoffforidle : service cycle : rtmp stream service: timeou…

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

paper: https://arxiv.org/abs/2402.13616 code YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 一、引言部分二、问题分析2.1 信息瓶颈原理2.2 可逆函数 三、本文方法3.1 可编程梯度信息 四、实验4.1消融实验部分 今天的深度学习方法关注的…

Python之Web开发中级教程----搭建Git环境

Python之Web开发中级教程----搭建Git环境一 Git 是目前世界上最先进的分布式版本控制系统 作用&#xff1a;代码管理。方便多人协同开发&#xff1b;方便版本控制。 安装git 单人本地仓库 建立本地仓库目录 配置个人管理信息 git config –global user.email 32356105163.com…

电子商务平台中商品数据采集|API数据接口采集商品的高效性体现

电子商务平台由一个个产品所构成,通过对产品的分析可以有效发掘用户需求,优化店铺产品结构,提升客户粘性、客单价、销售利润等。 一、产品行业数据采集API接口 采集产品行业数据的核心目的是了解该产品的市场需求变化情况,常用到的数据采集指标包括产品搜索指数和产品交易指数两…

【Vue 3】

v-model 作用&#xff1a;给表单元素使用&#xff0c;双向数据绑定---->可以快速获取或设置表单元素内容 是value属性和input事件的合写 数据变化--->视图自动更新试图变化--->数据自动更新 语法&#xff1a;v-model"变量" 数据变&#xff0c;视图跟着变…

ELK介绍使用

文章目录 一、ELK介绍二、Elasticsearch1. ElasticSearch简介&#xff1a;2. Elasticsearch核心概念3. Elasticsearch安装4. Elasticsearch基本操作1. 字段类型介绍2. 索引3. 映射4. 文档 5. Elasticsearch 复杂查询 三、LogStash1. LogStash简介2. LogStash安装 四、kibana1. …

如何在Windows系统部署Jellyfin Server并实现公网访问内网影音文件

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…

超算互联网统一存储平台技术研究

大家好&#xff0c;我是来自山东省计算中心&#xff08;国家超级计算济南中心&#xff09;的王春晓&#xff0c;我从2022年开始参与超算互联网的项目&#xff0c;主要负责算网统一存储平台的研发&#xff0c;在存储基座方面也做了很多调研&#xff0c;最后选择了Alluxio平台&am…

测试常用的Linux命令

前言 直接操作硬件 将把操作硬件的代码封装成系统调用&#xff0c;供程序员使用 虚拟机软件 可以模拟的具有完整硬件系统的功能 可以在虚拟机上安装不同的操作系统 Linux内核只有一个&#xff0c;发行版有很多种 内核来运行程序和管理像磁盘和打印机等硬件设备的核心程序 终端…