gpt4 book ai didi

map 的 Java 方法引用 - IntelliJ 警告

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:10 26 4
gpt4 key购买 nike

Intellij 警告这个表达式:

usersAttributes.get(user.getName()).forEach((attrName, val) -> user.addAttribute(attrName, val));

可以用方法引用代替。我该怎么做?

最佳答案

IntelliJ 是对的。你可以重写:

usersAttributes.get(user.getName()).forEach(user::addAttribute);

这种method reference叫做"Reference to an instance method of a particular object" :

The following is an example of a reference to an instance method of a particular object:

class ComparisonProvider {
public int compareByName(Person a, Person b) {
return a.getName().compareTo(b.getName());
}

public int compareByAge(Person a, Person b) {
return a.getBirthday().compareTo(b.getBirthday());
}
}
ComparisonProvider myComparisonProvider = new ComparisonProvider();
Arrays.sort(rosterAsArray, myComparisonProvider::compareByName);

The method reference myComparisonProvider::compareByName invokes the method compareByName that is part of the object myComparisonProvider. The JRE infers the method type arguments, which in this case are (Person, Person).

在您的情况下,user::addAttribute 指的是名为 addAttribute 的方法采用两个参数,其中第一个参数与 attrName 的类型兼容> 而第二个也与 val 的类型兼容。此方法将在 user 实例上调用。

关于 map 的 Java 方法引用 - IntelliJ 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655710/

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