Java Avro数组实际上是一个列表

Java Avro数组实际上是一个列表,java,arrays,list,maven,avro,Java,Arrays,List,Maven,Avro,我使用.avsc数据和maven插件来创建Java类。 但是当我想要创建这个对象的实例并在构造函数中设置值时,定义的数组被解释为一个值列表 我的例子是: {"type": "record", "name": "test", "namespace": "testing", "fields": [ {"name": "id", "type": ["null", "int"]}, {"name": "arr", "type": ["null", {"type": "array", "i

我使用.avsc数据和maven插件来创建Java类。 但是当我想要创建这个对象的实例并在构造函数中设置值时,定义的数组被解释为一个值列表

我的例子是:

{"type": "record", "name": "test", "namespace": "testing",
"fields": [
    {"name": "id", "type": ["null", "int"]},
    {"name": "arr", "type": ["null", {"type": "array", "items": "double"}]}
]
}
现在
testt=newtest(1,newdouble[]{1.0,2.0,3.0})
说它需要
java.util.List


有人能解释一下吗?

您需要传入一个
列表,而不是
数组,因为这是
测试
构造函数所期望的

如果您不打算修改列表,则可以使用:

但是,如果要修改列表,则需要构造类型为
list
的对象,然后将其传递给构造函数

List<Double> tempList = new ArrayList<>(Arrays.asList(1.0,2.0,3.0));
test t = new test(1, tempList);
List templast=newarraylist(Arrays.asList(1.0,2.0,3.0));
测试t=新测试(1,圣殿骑士);

你能展示你的构造函数来澄清它的定义吗?在这种情况下,它是由avro:schema插件生成的代码:public particle(java.lang.Integer id,java.util.List arr,){this.id=id;this.arr=arr;}非常感谢。它现在可以工作了,但是你能解释一下为什么avro会这样做,而不是将变量初始化为数组吗?@thejoeka说实话,我实际上从来没有使用过avro,但有一点可以肯定的是,你的构造函数已经定义了它需要一个列表,这与double数组完全不同。另外,为了回答您的问题,而不是将变量初始化为数组?,它确实创建了双数组,但不起作用,因为您再次提供了错误的类型。
List<Double> tempList = new ArrayList<>(Arrays.asList(1.0,2.0,3.0));
test t = new test(1, tempList);