【发布时间】:2017-01-12 07:55:57
【问题描述】:
我目前正在使用 Spring MVC 和 Hibernate 来开发我的 Web 应用程序。仍在学习java的内部工作原理。
我发现自己需要将数据存储在一个可以接受不同类型的对象以及其他一些数据字符串的字段中。更准确地说,我想创建一个可以保存消息、错误代码等的 ReturnObject。这样我的返回 JSON 可以在整个 api 中保持一致。
这就是我创建 ReturnObject 的方式
public class ReturnResponse {
//Set fields
private Object returnObj; <----- Need this to accept different types
private HttpStatus httpStatus;
private String message;
private String developerMessage;
// Start build
public ReturnResponse(){
this.returnObj = returnObj;
this.httpStatus =.....etc.
}
// Setters... getters...
}
private Object returnObj; 以便该字段可以接受 Collection、Maps、Class..等,但这安全吗?
我似乎记得,在字段中声明特定对象类型以确保类型安全始终是一个好习惯。
问题
您是否看到未来可预见的问题,是否有更好的方法来做到这一点?
如果这不是类型安全的,我该如何让它更安全。
【问题讨论】:
-
将
Object returnObj更改为Serializable returnObj -
我认为你应该只返回预期的消息。如果出现错误,您应该使用错误处理程序来执行此操作。这样您也可以避免这种困境,并且代码更具可读性。
-
Object 的问题在于它可以接受任何对象,并且您必须执行强制转换才能访问其中的成员。而且由于它可能接受任何对象,因此您可能很难确定应该将其向下转换为哪个类。 (只是我过去的经验)
-
类型范围有多广?这是一种“域”吗?也许从 IMyBasicPiecieOfData 继承可以帮助你
-
如果您返回 json,也许您应该考虑使用诸如 jersey 之类的库,再加上例如 jackson,来处理适当的休息端点。 json 是 json,它只是一个字符串。对象映射不是在休息点一侧(至少不一定)而是在调用者一侧完成。
标签: java