[JAVA] Méthode de surcharge avec arguments Int et Integer

-AutoBoxing a été introduit à partir du JDK1.5. Par exemple, il convertit automatiquement int et Integer. Il en va de même pour les appels de méthode. Vous pouvez appeler la méthode d'argument int en utilisant Integer, et vice versa. C'est assez pratique.

・ Ensuite, le problème. -Que se passe-t-il si les arguments sont définis comme int et Integer avec une méthode du même nom? ・ Y a-t-il une erreur de compilation? ・ Sinon, comment peuvent-ils être appelés?

・ Notez les conclusions obtenues -Les méthodes portant le même nom peuvent être définies avec des arguments int et Integer, respectivement. ⇒ Autrement dit, il peut être surchargé ・ Du côté de l'appelant, lors d'un appel avec int ou Integer, ils sont correctement appelés. -Même si l'une des méthodes est supprimée, elle peut être appelée et la méthode restante est appelée.

Tips0005.java


package jp.avaj.lib.algo;

import jp.avaj.lib.test.L;

public class Tips0005 {
  public static void main(String[] args) {

    //Appeler method0 avec int
    method0(1);

    //Appeler method0 avec Integer
    method0(new Integer(10));

    //Appeler method1 avec int
    method1(1);

    //Appeler method1 avec Integer
    method1(new Integer(10));

    //Jusque-là, le résultat est naturel..


    //Appeler method2 avec int
    method2(1);

    //Appeler method2 avec Integer
    method2(new Integer(10));

  }
  /**méthode d'argument int*/
  private static void method0(int v) {
    L.p("intMethod0:"+v);
  }
  /**Méthode d'argument entier*/
  private static void method1(Integer v) {
    L.p("integerMethod1:"+v);
  }

  /**méthode d'argument int*/
  private static void method2(int v) {
    L.p("intMethod2:"+v);
  }
  /**Méthode d'argument entier*/
  private static void method2(Integer v) {
    L.p("integerMethod2:"+v);
  }

Si vous regardez les résultats, ils sont correctement appelés. En parlant bien sûr, c'est naturel, mais confirmation que c'est naturel.

Mais est-ce plutôt un problème que les deux peuvent être définis? Peut-être que je n'avais pas réalisé que j'avais défini les deux et qu'il n'y avait pas de bogue.

Résultat d'exécution


intMethod0:1
intMethod0:10
integerMethod1:1
integerMethod1:10
intMethod2:1
integerMethod2:10

Recommended Posts

Méthode de surcharge avec arguments Int et Integer
Comment vérifier les nombres entiers avec ruby
Surcharge lorsque les arguments de méthode sont hérités / implémentés
Jugement de valeur égale de Integer et int
Différence entre int et Integer en Java
[Ruby] Mots clés avec mots clés et valeurs par défaut des arguments
Compare Integer avec ==
À propos de la synchronisation des appels et des arguments de la méthode addToBackStack
Vérifier les arguments d'appel de méthode dans les blocs avec RSpec
Arguments formels et réels
[Java] Arguments et paramètres
[Java] Surcharge et remplacement
[Ruby] Questions et vérification du nombre d'arguments de méthode
Kotlin post- et pré-incrémentation et surcharge des opérateurs (comparaison avec C, Java, C ++)