gpt4 book ai didi

java - 填充数组的对象列表 asList 无法编译需要可序列化列表

转载 作者:行者123 更新时间:2023-12-02 06:02:09 25 4
gpt4 key购买 nike

这是我想要做的示例代码,我正在尝试创建任何混合类型 boolean 数组/int数组/长数组的 float 组/int/long/boolean/字符串的对象列表

public List<Object> saveState() {
return Arrays.asList("potatoes", false, 11, null, new int[] {123, 44}, new float[] {66.331, 11.22}, boolean[] {false, false, true});
}

  required: List<Object>
found: List<INT#1>
where INT#1,INT#2 are intersection types:
INT#1 extends Object,Serializable,Comparable<? extends INT#2>
INT#2 extends Object,Serializable,Comparable<?>

然后当使用实数变量而不是对值进行硬编码时。我收到此错误

required: List<Object>
found: List<Serializable>

我想弄清楚如何转换一个 new Object[] {...} ,它编译没有问题,但它必须是另一个库的列表,我也需要传递值。

最佳答案

当您将不同的类型参数传递给一个期望所有类型参数都具有相同类型的方法时,就会出现类型推断的问题。然后,编译器将类型参数推断为类型参数的所有常见父类(super class)型的交集。

就您而言,您传递的是 - Stringbooleanintint[],所以关于...类型。当然,它们不能适合所有类型中的单一类型。所以,推断的类型是:

Object & Serializable & Comparable<?>

因为这些是所有给定类型的父类(super class)型。

如果您愿意,可以显式指定单个类型参数:

public List<Object> saveState() {
return Arrays.<Object>asList("potatoes", false, 11, null, new int[] {123, 44}, new float[] {66.331, 11.22}, boolean[] {false, false, true});
}

引用:

关于java - 填充数组的对象列表 asList 无法编译需要可序列化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22590357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com