class Calculator {
public static void essential(String… args) {
// This technique invocation won't compile
// Sure, 1 may very well be float however the JVM creates it as double
calculate(1.0);
}
void calculate(float quantity) {}
}
Outro erro comum é pensar que o Double
ou qualquer outro tipo de wrapper seria mais adequado ao método que está recebendo um double
. Na verdade, é preciso menos esforço para a JVM alargar o Double
invólucro para um Object
em vez de desembalar para um double
tipo primitivo.
Para resumir, quando usado diretamente no código Java, 1 será int
e 1.0 será double
. A ampliação é o caminho mais lento para a execução, o boxing ou unboxing vem em seguida, e a última operação será sempre varargs
.
O que lembrar sobre sobrecarga
Sobrecarga é uma técnica muito poderosa para cenários onde você precisa do mesmo nome de método com parâmetros diferentes. É uma técnica útil porque ter o nome certo no seu código faz uma grande diferença para legibilidade. Em vez de duplicar o método e adicionar desordem ao seu código, você pode simplesmente sobrecarregá-lo. Fazer isso mantém seu código limpo e fácil de ler, e reduz o risco de que métodos duplicados quebrem alguma parte do sistema.
O que ter em mente:Ao sobrecarregar um método, a JVM fará o menor esforço possível; esta é a ordem do caminho mais lento para a execução:
- Primeiro é a ampliação
- O segundo é o boxe
- O terceiro é Varargs
O que observar:Situações complicadas surgirão ao declarar um número diretamente: 1 será int
e 1.0 será double
.
Lembre-se também de que você pode declarar esses tipos explicitamente usando a sintaxe de 1F ou 1f para um float
ou 1D ou 1d para um double
.
Isso conclui nossa introdução ao papel da JVM na sobrecarga de métodos. É importante perceber que a JVM é inerentemente preguiçosa e sempre seguirá o caminho mais preguiçoso para a execução.
Desafio de vídeo! Sobrecarga de método de depuração
Depurar é uma das maneiras mais fáceis de absorver completamente os conceitos de programação e, ao mesmo tempo, melhorar seu código. Neste vídeo, você pode acompanhar enquanto eu depuro e explico o desafio de sobrecarga de método: