当前位置: 首页 > 知识库问答 >
问题:

使用强制转换的lambda表达式初始化数组[duplicate]

胡劲
2023-03-14

我正在尝试使用lambda表达式实例化一个数组。

public class Main {

    static int x = 0;

    public static void main(String[] args) {

        Test[] t = (Test[]) Stream
                .generate(() -> new Test(x++, 0))
                .limit(10)
                .map((Test v) -> {
                    v.a = v.a * 2;
                    return v;
                }) 
        );
public class Test {

int a, b;

 Test(int a, int b) {
    this.a = a;
    this.b = b;
 }
}

该数组是一个“[Ljava.lang.Object;”实例

//class "[Ljava.lang.Object;"
        System.out.println(
                Stream.generate(() -> new Test(x++, 0))
                .limit(10)
                .map((Test v) -> {
                    v.a = v.a * 2;
                    return v;
                })
                .toArray().getClass()                
        );

数组的每个对象都是一个“测试”实例

//class "Test"
        System.out.println(
                Stream.generate(() -> new Test(x++, 0))
                .limit(10)
                .map((Test v) -> {
                    v.a = v.a * 2;
                    return v;
                })
                .toArray()[0].getClass()                
        );

共有1个答案

融修平
2023-03-14

您不能仅仅强制转换一个流并期望它成为一个数组。

使用a[]toArray(IntFunction generator)方法。

    Test[] a = Stream.generate(() -> new Test(x++, 0))
            .limit(10)
            .map((Test v) -> {
                v.a = v.a * 2;
                return v;
            })
            .toArray(Test[]::new);
 类似资料:
  • 问题内容: 有没有更好的功能方法,可以使用Java 8 lambda语法将“ key:value”形式的字符串数组转换为a ? 我现在拥有的解决方案似乎并没有真正起作用: 问题答案: 您可以修改解决方案以将的数组收集到中(而不是使用): 当然,该解决方案不能防止无效输入。也许您应该添加一个过滤器,以防拆分字符串没有分隔符: 这仍然不能保护您免受所有无效输入的侵害(例如,将导致抛出)。

  • 我是jpa的新手,需要这样的东西: 我能修好它吗?

  • 如果没有找到可行的初始值设定项列表构造函数,则再次执行重载解析,其中候选函数是类T的所有构造函数,参数列表由初始值设定项列表的元素组成。 : 如果构造函数的第一个参数类型为或对某些类型可能是CV限定的的引用,并且没有其他参数,或者所有其他参数都具有默认参数,则构造函数就是初始化式列表构造函数

  • 我还在尝试理解lambda表达式。 我想将这个lambda表达式转换为“普通”表达式: 你们有主意吗? 提前谢谢。

  • 我希望将一个< code>int数组转换为一个< code>double数组。 所以,当我有 我想使用,比如说把它作为参数传递给一个方法。 最好的方法是什么? 演员阵容 不工作。 我可以迭代通过: 有没有更好的方法来做到这一点? <代码>系统。arraycopy不起作用——不适用于两种不同基元类型的数组。 注意:在Java和其他一些讨论中,我们看到了将对象转换为数组。 蒂亚。

  • 使用Java 8 lambda语法将“key:value”形式的字符串数组转换为是否有更好的功能方法? 我现在的解决方案似乎并不实用: