Java方法通用返回结果集封装实例与策略
版权申诉
140 浏览量
更新于2024-09-11
收藏 77KB PDF 举报
"本篇文章主要探讨了Java方法在处理返回结果集时的通用封装策略。在编程中,当方法不仅需要返回实际的数据结果(如List或Map),还需要包含状态码(如code或status)和可能的错误信息(msg)时,如何有效地组织和传递这些信息变得尤为重要。本文提供了两种常见的封装方式:一是使用HashMap作为返回值,二是利用泛型类来创建一个通用的结果集对象。
1. HashMap封装:这种方法将不同类型的返回信息(如状态、消息和数据)组织在一个统一的HashMap中。首先,创建一个名为`result`的方法,它接受一个参数并初始化一个HashMap。通过判断特定条件,设置不同的状态码和消息,然后将数据对象添加到HashMap的"data"键下。在调用方法时,可以通过检查状态码来决定是否继续执行后续操作。
```java
public Map<String, Object> result(Object object) {
// ... (代码省略)
if (条件2不通过校验) {
result.put("status", "-1");
result.put("msg", ".");
return result;
}
// ... (代码省略)
Object data = new Object();
result.put("data", data);
return result;
}
public void test() {
Map<String, Object> result = this.result(new Object());
if (!"1".equals(result.get("status"))) {
// 处理错误情况
} else {
Object data = result.get("data"); // 获取并处理数据
}
}
```
2. 泛型对象封装:另一种方法是定义一个通用的`Result`类,使用泛型来指定返回的数据类型。这个类包含了状态码、消息和数据属性,并提供构造函数来设置初始状态。这样可以使得返回的结果更加清晰且类型安全。例如:
```java
public class Result<T> {
private static final String SUCCESS = "1";
private static final String FAIL = "0";
private String code;
private String msg;
private T data;
public Result(String code) {
this.code = code;
}
// ... (getter和setter方法)
// 添加构造函数接收数据
public Result(String code, T data) {
this.code = code;
this.data = data;
}
// 使用方法返回实例
public static <T> Result<T> success(T data) {
return new Result<>(SUCCESS, data);
}
// ... (其他状态的构造函数)
}
public void test() {
Result<Object> result = Result.success(new Object());
// ... (处理结果)
}
```
总结来说,Java方法的返回结果集封装可以采用HashMap方便地组合不同类型的值,也可以利用泛型类设计一个通用的结构,提高代码的可读性和复用性。选择哪种方式取决于项目的具体需求和团队的编码习惯。理解并熟练运用这些封装技巧能帮助开发者编写出更优雅、易于理解和维护的代码。
475 浏览量
点击了解资源详情
点击了解资源详情
2009-08-21 上传
3332 浏览量
547 浏览量
2021-09-30 上传
2009-05-06 上传
221 浏览量
weixin_38664469
- 粉丝: 5
- 资源: 896
最新资源
- 紫黄扁平化工作总结图表大全PPT模板
- stuntz-strategies.github.io:stuntzstrategies.com
- GitRainbow-crx插件
- 煤渣:干净,响应Swift的MkDocs主题
- 基于modbus协议的大屏数据监控,使用modbus slave模拟数据,串口服务器获取温湿度.zip
- office2007驱动AccessDatabaseEngine.zip
- sample-quarkus-speaker:这是一个如何使用JAX-RS RESOURCES,Hibernate Panache以及如何准备在Openshift中使用S2I的项目的示例。
- Free fire generator-crx插件
- farmaciaJS:法玛西亚
- AngularJs-and-grunt-with-java-spring
- 数据结构课后答案
- sqlite-utils:用于操纵SQLite数据库的Python CLI实用程序和库
- SpringBoot-atguigu-resource:Bilibili SpringBoot_2019权威教程CRUD实验静态资源文件
- 蓝色复古花卉文艺范图表下载PPT模板
- duplichecker for chrome-crx插件
- binwalk-master.zip