Java 如何避免递归定义的列表的原始类型?

Java 如何避免递归定义的列表的原始类型?,java,arrays,list,recursion,Java,Arrays,List,Recursion,在Java中,我正在构建一个形式为f(x_1,…,x_n)->y的函数输出的n维数据结构,然后将其转换为JSON并传递回客户机,在那里对其进行处理。由于数据结构的深度取决于被评估函数的输入参数数量(它也是ndimensional),因此我使用递归函数生成数据结构,递归函数传递一个参数列表,如果传递两个以上的参数,则生成一个列表,或者如果只传递一个参数,则为一个双精度列表。生成列表的方法如下所示: static private List buildList(List<String> p

在Java中,我正在构建一个形式为
f(x_1,…,x_n)->y
的函数输出的n维数据结构,然后将其转换为JSON并传递回客户机,在那里对其进行处理。由于数据结构的深度取决于被评估函数的输入参数数量(它也是
n
dimensional),因此我使用递归函数生成数据结构,递归函数传递一个参数列表,如果传递两个以上的参数,则生成一个列表,或者如果只传递一个参数,则为一个双精度列表。生成列表的方法如下所示:

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;
    }
}
静态私有列表构建列表(列表参数){
if(parameters.size()>1){
List returnList=newarraylist;
//调用buildList生成returnList的内容;
退货清单;
}否则{
List returnList=由另一个方法生成的值数组
退货清单;
}
}
此方法由另一个方法调用,该方法获取输出列表,将其转换为JSON,并将其添加到响应对象

这种方法的问题是,因为我直到运行时才知道数据结构的维度,所以我不确定如何定义我的函数,这样我就不会处理和返回原始数据类型,如
List
List
。理想情况下,对于三维数据结构,我似乎应该键入类似于
List
的返回值,但我不确定如何设置代码来实现这一点。我不太会编写Java代码,因此类型安全对我来说是一个相对陌生的概念,但我的印象是,在Java的奇妙世界中,使用原始类型通常是不受欢迎的


在这种递归模式中,是否有避免使用原始类型的最佳实践方法,或者我应该坚持我目前的方法?

每个对象的父类都是对象类<代码>可以保存任何内容(
列表
)。因此,每次您声明一个
列表
时,都要创建一个能够容纳任何对象的类型
对象

每个对象的父类都是对象类<代码>可以保存任何内容(
列表
)。因此,每次您声明一个
列表
时,都要创建一个能够容纳任何对象的类型
对象

泛型(尖括号之间的东西)用于编译时类型安全检查

如果在请求之前您不知道给定列表的内容,那就没有意义了

您可能最容易将列表键入为
list

另外,附带提示,假设您是java 7或更高版本,您可以更简单地声明impl:

List<Object> myList = new ArrayList<>();
List myList=new ArrayList();
注意
ArrayList
上的空
。这意味着“每声明类型”。只是让你的代码更简洁一些。

泛型(尖括号之间的东西)用于编译时类型安全检查

如果在请求之前您不知道给定列表的内容,那就没有意义了

您可能最容易将列表键入为
list

另外,附带提示,假设您是java 7或更高版本,您可以更简单地声明impl:

List<Object> myList = new ArrayList<>();
List myList=new ArrayList();

注意
ArrayList
上的空
。这意味着“每声明类型”。只需使代码更加简洁。

您必须使用
列表
。您必须使用
列表
。请注意
列表
列表
不同。
列表
是任何东西的列表,
列表
是某种特定未知类型的列表。您不能将
添加到
列表中。请注意
列表
列表
不同。
列表
是任何东西的列表,
列表
是某种特定未知类型的列表。您不能将
添加到
列表中。