在做开发时遇到了这样一个问题,有一个方法我需要对一个json的字符串做一些处理,处理完成之后再返回,但是返回的需要并不明确,返回多种类型的对象从功能上讲都是一样的,如Object,String.伪代码如下:
public ?? adaptTheMetadataByLanguage(String json) {
ObjectMapper mapper = new ObjectMapper();
JsonNode metadataNode = mapper.readTree(metadata);
//modify this json by requiremennt
return ??;
}
那么这个问题有没有一个准则或者是通用的方案呢。首先我们需要明白一个方法的返回值是什么. 方法也叫函数,方法的返回值也可以说是一个函数的计算结果。但是代码是相对更加灵活的,我们可以使用各种工具,将一个类型转换成另一个类型。因此方法的返回值类型总结起来说应该是:根据实际的需求去定义。
当不需要返回时定义为null,当需要返回时可以先返回Object,然后再去调整返回值的类型,在都满足需求的情况下可以从怎样返回使得调用者使用更加方便的角度去定义。
java中的main方法是一个很好的例子,main方法的定义是void的,即不需要返回值,这是因为main方法是用来启动一个Java应用程序的,他是一个Java应用程序的入口,这个方法的调用者不需要任何返回值。因此他被定义为了void的方法。关于main方法的内容可以参考这篇博客:[java] 关于main方法的一切。
回到上面的这个问题当中,经过和相关方法调用者的商量,最后是定义成了String类型的返回值,因为输入的参数类型是一个String类型的json,那么在对这个json进行了一系列操作之后,返回值依然是String应该是更合理的。这个问题我们可以灵活看待举一反三,方法的返回值是一个灵活的东西,对于任何灵活不固定的东西,我们都应该秉持的原则是根据实际需求决定,到底采用什么方案。