也许这很简单,但实际上我对Java 8功能不熟悉,不知道如何实现。我有一条包含以下文本的简单行:
“密钥,名称”
并且我想将该行转换为String数组,并用逗号(,)分隔每个值,但是,我还想在返回最后一个数组之前修剪每个字段,所以我做了以下工作:
Arrays.stream(line.split(",")).map(String::trim).toArray();
但是,这将返回Object []数组而不是String
[]数组。经过进一步检查,我可以确认内容实际上是String实例,但是数组本身是Object元素。让我说明一下,这就是调试器对返回的对象的说明:
Object[]:
0 = (String) "Key"
1 = (String) "Name"
据我所知,问题出在映射调用的返回类型上,但是如何使它返回String []数组呢?
使用toArray(size -> new String[size])
或toArray(String[]::new)
。
String[] strings = Arrays.stream(line.split(",")).map(String::trim).toArray(String[]::new);
这实际上是一个lambda表达式
.toArray(new IntFuncthtml" target="_blank">ion<String[]>() {
@Override
public String[] apply(int size) {
return new String[size];
}
});
告诉您将数组转换为相同大小的String数组。
来自文档
生成器函数采用整数(即所需数组的大小),并生成所需大小的数组。这可以用数组构造函数参考简明表达:
Person[] men = people.stream()
.filter(p -> p.getGender() == MALE)
.toArray(Person[]::new);
类型参数:
A-结果数组的元素类型
参数:
generator-产生所需类型和所提供长度的新数组的函数
也许这很简单,但实际上我对Java8特性一无所知,不知道如何实现这一点。我有一个简单的行,包含以下文本: “密钥,名称”
我很难理解为什么一维数组到基元数组的转换失败,而二维情况下却有效。 我试着翻阅文件,但没有用。我可以看到的一件事是,在第一种情况下,由于我们试图将转换为,所以可能导致错误,而第二种情况可以正常工作,因为将是一个对象类型。 用一个示例来解释的工作原理,特别是对基元的工作原理,将非常有帮助。
我正在尝试有一个通量通用转换器使用通用类型在Java 8。我把我的代码建立在这个答案的基础上。其思想基本上是实现这个特定的转换器->: 类型转换器->转换为我想要的任何类型。因此,我正在使用构造函数创建一个类型为的类,并返回一个方法。我想在调用上创建类似这样的多个条目:,但类类型不同。但它甚至对整数也不起作用。 当我使用此单元测试进行测试时,我得到错误:。
我看了几十个答案,但他们做的大多数是建议或类似的技巧。在我的例子中,我要转换的类型是。下面是这个POJO: 由于重构,现在是一个数组。 (显然这是一种简化,对象多了很多字段)。我只想获得一个数组,以便将其传递给。以下是我想要的: 但是根据IDE返回。生成器不工作,但无论如何这不是一个好主意,我们不想重新分配或扰乱那些未来。只需返回它们的数组。传递不会编译。 不要把这个问题标记为重复问题,除非你绝对
问题内容: 我正在将iOS项目迁移到Swift。我正在上课。当我从Swift调用Objective C方法时,很多Objective C类型都转换为它们的Swift对应类型。 在我的情况下,目标C 转换为Swift的。现在是我的问题了。在我的Swift类中,我从Objective C对象获得了这样的数组。现在我处于Swift世界中,我想将此数组强制转换为特定类型,而不是,因为我确定知道此数组中存在
问题内容: 我正在使用返回“对象”类型的普通对象的Web服务。调试清楚地表明此对象中存在某种Array,因此我想知道如何将“ Object”转换为Array(或类似对象)? 我尝试了以下方法: 但是没有任何效果。我总是得到一个InvocationTargetException。 我究竟做错了什么? 编辑 : 可悲的是,我不得不删除指向显示Eclipse调试器输出的图像的链接,因为它不再可用。请不要