"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que a passagem `null` para um método sobrecarregado em java chama o método com o parâmetro` string`?

Por que a passagem `null` para um método sobrecarregado em java chama o método com o parâmetro` string`?

Postado em 2025-03-04
Navegar:780

Why does passing `null` to an overloaded method in Java call the method with the `String` parameter?

sobrecarregando e seleção de parâmetros null

em java, quando um método é sobrecarregado, vários métodos existem com o mesmo nome, mas diferentes parâmetros listas. Quando uma invocação de método é feita, o compilador determina qual método sobrecarregado chama com base no número e nos tipos dos argumentos reais aprovados. Método public void (objeto O) { System.out.println ("Object Verion"); } Método public void (strings) { System.out.println ("string versão"); } public static void main (string args []) { MoneyCalc Pergunta = New MoneyCalc (); question.method (nulo); } }

Pergunta:
public class MoneyCalc {

   public void method(Object o) {
      System.out.println("Object Verion");
   }

   public void method(String s) {
      System.out.println("String Version");
   }

   public static void main(String args[]) {
      MoneyCalc question = new MoneyCalc();
      question.method(null);
   }
}

Responder:

em Java, null é um special constant thats a reprides a reprima a referência a em Java, null é um valor especial que é reproduz. Não é um valor de qualquer tipo específico, mas pode ser atribuído a uma variável de qualquer tipo de referência, incluindo objeto e string. De acordo com a especificação do idioma Java (JLS), a sobrecarga mais específica é escolhida com base em sua aplicabilidade e especificidade. Nesse caso, o NULL é aplicável a ambos os métodos, pois pode ser atribuído a variáveis ​​dos tipos de objeto e string. Nesse caso, a sobrecarga do método (string) é mais específica porque foi projetada para lidar apenas com argumentos da string do tipo. O método (objeto) sobrecarga é mais geral, pois pode lidar com argumentos do objeto de tipo ou qualquer uma de suas subclasses. Classe do MoneyCalc, ocorreria um erro de compilação. Isso ocorre porque nem o método (string) nem o método (StringBuffer) seriam mais específicos do que o outro neste caso, levando a uma ambiguidade na seleção de métodos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3