Vantagens das Referências para Métodos
Concisão:Referências para métodos são mais concisas que lambdas.
Exemplo: Incrementar valor em um Map usando merge:
Lambda:(count, incr) -> count + incr
Referência para método: Integer::sum
Redução de Boilerplate
Remoção de Parâmetros Inúteis:Parâmetros como count e incr são eliminados.
Exemplo:
map.merge(key, 1, Integer::sum);
ログイン後にコピー
Uso Eficiente de Referências para Métodos
- Documentação Útil em Lambdas:Em alguns casos, nomes de parâmetros em lambdas podem fornecer documentação útil.
- Conversão de Lambdas para Métodos:Se um lambda for muito complexo, extrair o código para um método separado e usar a referência para esse método.
IDEs e Referências para Métodos
- Sugestões de IDE:IDEs frequentemente sugerem substituição de lambdas por referências para métodos.
- Aceitação das Sugestões:Geralmente, aceite as sugestões, mas avalie caso a caso.
Exceções e Considerações
- Lambdas mais Concisos:Às vezes, lambdas são mais concisos que referências para métodos.
- Exemplo com Classe:
- Referência para método:GoshThisClassNameIsHumongous::action
- Lambda:() -> action()
- Função Identidade:Function.identity() vs. x -> x
Tipos de Referências para Métodos
- Estática: Integer::parseInt (lambda: str -> Integer.parseInt(str))
- Limitada:Instant.now()::isAfter (lambda: t -> Instant.now().isAfter(t))
- Ilimitada:String::toLowerCase (lambda: str -> str.toLowerCase())
- Construtor de Classe:TreeMap::new (lambda: () -> new TreeMap)
- Construtor de Array:int[]::new (lambda: len -> new int[len])
Conclusão
Preferência pelas Referências para Métodos:Use referências para métodos quando forem mais curtas e claras que lambdas.
Uso de Lambdas:Prefira lambdas se eles forem mais concisos ou se fornecerem melhor documentação.
以上が項目 ラムダよりもメソッドへの参照を優先するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。