在Java中,我正在构建一个形式为f(x_1,...,x_n)->y
的函数的输出的n维数据结构,然后我将其转换为JSON并传递回客户端,并在其中进行处理。由于数据结构的深度取决于被评估函数的输入参数的数量(它也是n
维),我使用递归函数生成数据结构,该递归函数传递参数列表并生成如果传递了两个以上的参数,则列表列表,如果仅传递单个参数,则列出双精度列表。生成列表的方法如下所示:
static private List buildList(List<String> parameters){
if(parameters.size() > 1){
List<List> returnList = new arrayList<List>;
//call buildList to generate contents of returnList;
return returnList;
} else {
List<Double> returnList = array of values generated by another method
return returnList;
}
}
此方法由另一个方法调用,该方法获取输出列表,将其转换为JSON,并将其添加到响应对象。
我对这种方法的问题在于,因为直到运行时我才知道数据结构的维度,所以我不确定如何定义我的函数,以便我不处理和返回像{这样的原始数据类型{1}}和List
。理想情况下,我似乎应该为三维数据结构键入类似List<List>
的返回值,但我不确定如何设置代码来执行此操作。我不编写很多Java代码,因此类型安全对我来说是一个相对陌生的概念,但我的印象是在Java的精彩世界中,原始类型的使用通常是不受欢迎的。
是否有一种避免在这种递归模式中使用原始类型的最佳实践方法,还是应该坚持我目前的方法?
答案 0 :(得分:1)
每个对象的父类都是Object类。 <Object>
可以保留任何内容(List<List<List<Double>>>
)。因此,每当您声明List
时,都会生成能够容纳任何对象的类型Object
。
答案 1 :(得分:1)