作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Static context cannot access non-static in Collectors
(2 个回答)
Java 8 Stream non static method stream cannot be referenced
(1 个回答)
Java 8 stream “Cannot use this in a static context”
(2 个回答)
10 个月前关闭。
我有一个如下的 json 和一个类似的类 MyClient
:
[
{
"id": 2,
"partners": [
{
"configuration": {
"connect-fleet-sync": false
},
"id": "cf89cbc5-0886-48cc-81e7-ca6123bc4857"
},
{
"configuration": {
"connect-fleet-sync": false
},
"id": "cf89cbc5-0886-48cc-81e7-ca6123bc4967"
}
]
},
{
"id": 3,
"partners": [
{
"configuration": {
"connect-fleet-sync": false
},
"id": "c3354af5-16e3-4713-b1f5-a5369c0b13d6"
}
]
}
]
我需要一个方法来接收 uuid 并返回
id .
findClientId("cf89cbc5-0886-48cc-81e7-ca6123bc4967")
然后它返回
2
:
public static void findClientId(String partnerId, MyClient[] allMyClients) {
Stream.of(allMyClients)
.map(MyClient::getPartners)
.forEach(Partner::getPartnerId)
.filter(
partner ->partner.id.equals(partnerId)))
.map(MyClient::getId);
}
但它提示
Non-static method cannot be referenced from a static context
在线
.forEach(Partner::getPartnerId)
最佳答案
一、Stream.forEach
是空的。您不能调用 .filter
或之后的任何其他方法。除此之外,.map(MyClient::getPartners)
会让你输MyClient
管道中的信息 MyClient.getId
你要的那个。您必须使用嵌套流来过滤每个客户端的合作伙伴列表。
你的代码应该是:
public static String findClientId(String partnerId, MyClient[] allMyClients) {
return Stream.of(allMyClients)
.filter(client -> client.getPartners()
.stream()
.anyMatch(partner -> partner.getPartnerId().equals(partnerId)))
.map(MyClient::getId)
.findAny()
.orElse(null); // change to whatever is desired
}
关于Java 流 : How to find id from json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64437573/
我是一名优秀的程序员,十分优秀!