Java 怎么设计一个优雅的返回结果类

2020-01-07 21:08:49 +08:00
 Aliberter

    public class JSONResult<T>{
        private String code;
        private String message;
        private T data;
		private Object data;
    }
    

用这个类的时候,写泛型,写起来麻烦又感觉不太好看; 不写泛型,直接用原始类型,不好,IDEA 报警告; 不用泛型,用 Object,解析时还得强转,IDEA 也报警告。

3467 次点击
所在节点    程序员
13 条回复
luckyrayyy
2020-01-07 21:18:05 +08:00
泛型就很优雅啊...Object 肯定不行。
NeinChn
2020-01-07 21:18:35 +08:00
找一个不会报警 /报警颜色不突出 /可以关掉所以异常判断的编辑器
(大厂都这么做,比如头条,狗头保命
luozic
2020-01-07 21:20:43 +08:00
Java 有类型推断或者模式匹配么? 没有… 还是找个看不到的吧。
chendy
2020-01-07 21:23:23 +08:00
不用…直接返回结果 + 异常机制
chendy
2020-01-07 21:25:52 +08:00
貌似理解错了问题…
服务端和客户端都可以用泛型,不太懂楼主说的不好看是哪里不好看
没有泛型的话解析只能拿到 Map 吧…
billlee
2020-01-07 21:43:33 +08:00
所以你需要的是类型推导,用 scala 或者 kotlin 就可以不写类型。
crclz
2020-01-07 22:10:48 +08:00
if 类库代码:
result 的模式会较少用到。如果用到,设计专有的 result,而不是通用的.

if Http 响应体:
if 查询类接口:
设计专有的 DTO 类
if 命令类接口:
楼主的代码挺好的。
if 想让前端确切、方便的知道响应的 schema(swagger 解析):
设计专有的 DTO
tun
2020-01-07 23:06:28 +08:00
关闭警告
agzou
2020-01-07 23:08:38 +08:00
@Data
public class JSONResult<T> {

public static final String SUCCESS = "OK";
public static final String ERROR = "ERROR";
private String msg;
private String status;
private T data;

public JSONResult() {
}

public JSONResult(T data) {
this.data = data;
this.status = SUCCESS;
}

public JSONResult(String msg) {
this.status = ERROR;
this.msg = msg;
}

public static <T> JSONResult<T> ok(T data) {
return new JSONResult<>(data);
}

public static <T> JSONResult<T> ok() {
return new JSONResult<>();
}

public static <T> AjaxResponse<T> error(String msg) {
return new JSONResult<>(msg);
}
}
araaaa
2020-01-07 23:20:41 +08:00
泛型怎么就不优雅了
zjsxwc
2020-01-07 23:30:54 +08:00
知足吧,某没泛型的语言里,只能写一大堆 struct 来作为 dto
KuroNekoFan
2020-01-08 06:46:40 +08:00
返回一个字符串算了
myidea
2020-01-08 09:23:28 +08:00
data 用 Object 就行了,直接往里放,返回前端转成 json 都一样。
“用 Object,解析时还得强转”? -- 这里不需要手动转的,交由 spring 统一处理,理论上 JsonResult 应该只用于包装给前端的结果,不需要后端解析。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/635919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX