En terme d'effet, pour la méthode Class de la classe getMethod, il n'y a pas de différence entre ces deux paramètres. Nous pouvons visualiser le code source de getMethod Après que getMethod soit appelé couche par couche, la méthode suivante sera utilisée :
.
Dans cette méthode, vous pouvez voir qu'il existe une méthode arrayContentsEq utilisée pour faire correspondre les paramètres de la méthode :
On peut constater que pour le cas où parameterTypes est null et pour le cas où parameterTypes est un tableau vide (longueur == 0), l'effet est le idem - Supposons ceci Lorsque le paramètre de la méthode m que nous voulons obtenir est vide, alors la longueur du tableau (a2) renvoyé par m.getParameterTypes() de la méthode est 0. Nous pouvons constater que lorsque a1 == null ou a1.length == 0, la méthode arrayContentsEq renvoie Tous sont true (c'est-à-dire que la correspondance est réussie).
Si une méthode n’a pas de paramètres, il n’y a en réalité aucune différence entre les deux situations.
En traçant le code source de getMethod(String name, Class<?>... parameterTypes), vous pouvez trouver le code suivant, où a1 est le parameterTypes entrant, et a2 est le name appelé par l'instance Method trouvée selon le paramètre method.getParameterTypes(). Le programme renvoie le a1 correct en fonction de la comparaison de a2 et Method.
private static boolean arrayContentsEq(Object[] a1, Object[] a2) {
if (a1 == null) {
return a2 == null || a2.length == 0;
}
if (a2 == null) {
return a1.length == 0;
}
if (a1.length != a2.length) {
return false;
}
for (int i = 0; i < a1.length; i++) {
if (a1[i] != a2[i]) {
return false;
}
}
return true;
}
En terme d'effet, pour la méthode
.Class
de la classegetMethod
, il n'y a pas de différence entre ces deux paramètres.Nous pouvons visualiser le code source de
getMethod
Après quegetMethod
soit appelé couche par couche, la méthode suivante sera utilisée :Dans cette méthode, vous pouvez voir qu'il existe une méthode
arrayContentsEq
utilisée pour faire correspondre les paramètres de la méthode :On peut constater que pour le cas où parameterTypes est
null
et pour le cas où parameterTypes est un tableau vide (longueur == 0), l'effet est le idem - Supposons ceci Lorsque le paramètre de la méthode m que nous voulons obtenir est vide, alors la longueur du tableau (a2) renvoyé parm.getParameterTypes()
de la méthode est 0. Nous pouvons constater que lorsquea1 == null
oua1.length == 0
, la méthodearrayContentsEq
renvoie Tous sonttrue
(c'est-à-dire que la correspondance est réussie).Si une méthode n’a pas de paramètres, il n’y a en réalité aucune différence entre les deux situations.
En traçant le code source de
getMethod(String name, Class<?>... parameterTypes)
, vous pouvez trouver le code suivant, où a1 est leparameterTypes
entrant, eta2
est lename
appelé par l'instanceMethod
trouvée selon le paramètremethod.getParameterTypes()
. Le programme renvoie lea1
correct en fonction de la comparaison dea2
etMethod
.