Я новичок в java8, и я пытался понять этот кусок кода. Это фрагмент кода:
Stream.of("A", "B", "C").anyMatch(someObj.getStringValue()::equalsIgnoreCase)
someObj.getStringValue()
ссылается на некоторый объект, а getStringValue()
возвращает некоторое строковое значение.
Каков эквивалентный предикат ссылки на метод, передаваемый вanyMatch(...)
?
Насколько я понимаю, это было бы эквивалентно:
Predicate<String> p = new Predicate<String>() {
@Override
public boolean test(String t) {
return someObject.getStringValue().equalsIgnoreCase(t);
}
}
Stream.of("A", "B", "C").anyMatch(p)
При этом я получаю сообщение об ошибке "Локальная переменная someObject
, определенная во внешней области видимости, должна быть окончательной или эффективнойокончательный «. Любое объяснение этого приветствуется.