누군가 메소드 참조를 사용하도록 다음 코드를 변환 할 수 있습니까? 나는이 새로운 구문 주위에 내 머리를 정리하기 위해 노력하고있어하지만 하나의 변수가 하나의 메소드 호출에 대응하기보다 더 복잡 얻을 때 나는 빨리 분실 :lambdas를 메소드 참조로 변환하십시오.
getWorkspaces().stream().forEach((ws) -> {
DataStoreInfo defaultDataStore = getDefaultDataStore(ws);
if (defaultDataStore != null) {
other.setDefaultDataStore(ws, defaultDataStore);
}
});
내가이 시작하지만, '아무튼 t 작업 :
getWorkspaces().stream()
.map(this::getDefaultDataStore)
.filter(Objects::nonNull)
.map(other::setDefaultDataStore);
편집 : "그것은 작동하지 않습니다", 나는이 IDE는이 방법을 해결할 수없는 "setDefaultDataStore"의 마지막 줄에 불만을 의미한다. 나는 일하는 것으로 시작할 수 있었으면 좋겠지 만, 나는 거기에 도착하는 방법을 모른다. 메소드 참조를 사용하여 2 개의 매개 변수를 취하는 메소드를 호출하는 방법과 그 메소드를 매핑하는 방법에 대해서는 매우 혼란 스럽습니다. 이에
getMaps().stream().forEach((m) -> {
other.add(m);
});
: I는 다음과 같습니다 몇 가지 코드를 변환 한
getMaps().forEach(other::add);
하지만 더 복잡한 얻을 때 나는 손실됩니다. 메서드 참조가있는 동일한 코드를 작성하는 방법에 대한 확실한 해결책이 있었으면합니다.
"작동하지 않음"이란 무엇을 의미합니까? 보다 구체적으로, 이상적으로 [mcve]를 제공하십시오. –
@GhostCat : 나는하지 못했다. 그러나 더 이상 세부 사항없이 "작동하지 않는다"는 것은 이상적인 질문에서 멀리 떨어져있다. –
"메소드 참조 사용"을 시도하기 전에이 메소드없이 작동하는 것을 작성해야합니다.두 번째 스 니펫은 람다 식에서도 작동하지 않으며 메서드 참조를 사용하는 것과 관련이 없습니다. 우선,'setDefaultDataStore'에 두 개의 매개 변수가 필요합니다. 그래서 그들을 저장해야합니다. – Tunaki