map-IntelliJ警告的Java方法参考
Intellij警告此表达式:map-IntelliJ警告的Java方法参考,java,java-8,method-reference,Java,Java 8,Method Reference,Intellij警告此表达式: usersAttributes.get(user.getName()).forEach((attrName, val) -> user.addAttribute(attrName, val)); 可替换为方法引用。我该怎么做呢?IntelliJ是对的。你可以重写: usersAttributes.get(user.getName()).forEach(user::addAttribute); 这种情况称为: 以下是对特定对象的实例方法的引用示例: cla
usersAttributes.get(user.getName()).forEach((attrName, val) -> user.addAttribute(attrName, val));
可替换为方法引用。我该怎么做呢?IntelliJ是对的。你可以重写:
usersAttributes.get(user.getName()).forEach(user::addAttribute);
这种情况称为:
以下是对特定对象的实例方法的引用示例:
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);
方法引用myComparisonProvider::compareByName
调用作为对象myComparisonProvider
一部分的方法compareByName
。JRE推断方法类型参数,在本例中为(Person,Person)
在您的例子中,user::addAttribute
引用名为addAttribute
的方法,该方法使用两个参数,其中第一个参数与attrName
类型兼容,第二个参数也与val
类型兼容。此方法将在用户
实例上调用