Tentei seguir a lista Java 8 no mapa e tente alterar Definir para mapa em uma lista
Em vez de loop (que funciona)
for (Type t : toSet()) {
map.put(Pair.of(t, Boolean.TRUE), this::methodAcceptingMap);
}
Tentei com soluções como:
toSet().stream()
.collect(Collectors.toMap(Pair.of(Function.identity(), Boolean.TRUE),
this::methodAcceptingMap));
Mas ocorreu um erro ao converter:
Type mismatch: cannot convert from Pair<Function<Object,Object>,Boolean>
to Function<? super T,? extends K>
Meu mapa
private Map<Pair<Type, Boolean>, BiConsumer<Pair<Type, Boolean>, Parameters>> map =
new HashMap<>();
Collectors.toMap
tem duas funções, e nenhum de seus argumentos se encaixa.
Você deveria usar:
Map<Pair<Type, Boolean>, BiConsumer<Pair<Type, Boolean>, Parameters>> map =
set.stream()
.collect(Collectors.toMap(el -> Pair.of(el, Boolean.TRUE),
el -> this::methodAcceptingMap));
A expressão Pair.of(t, Boolean.TRUE)
simplesmente não é de um Function
tipo. E this::methodAcceptingMap
pode caber na assinatura de a BiConsumer
, mas o método requer uma Função. Portanto, el -> this::methodAcceptingMap
deve ser usado como uma função que recebe um elemento de fluxo e retorna seu BiConsumer
.
Observe que o contexto de atribuição ( map =
) é importante neste caso. Sem ele, o tipo de destino dessas expressões lambda estará ausente e a compilação falhará.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras