Maison  >  Article  >  Java  >  JavagetMethod()

JavagetMethod()

PHPz
PHPzoriginal
2024-08-30 15:39:491069parcourir

Java getMethod() est une méthode dans java.lang.Class.getMethod() qui renvoie une instance de la classe Method dans le package java.lang.reflect qui contient la référence d'une fonction membre publique donnée présente dans la référence d'objet Class donnée à une classe ou une interface. Cette méthode prend le nom de la méthode à transmettre comme premier paramètre. Le deuxième paramètre à transmettre est un tableau d'objets de Class qui déterminent les types de données de paramètres formels de la méthode renvoyée ou un tableau vide déterminant null comme paramterTypes. L'algorithme de recherche utilisé ici est le même que celui de la méthode privée GetPublicMethods().

PUBLICITÉ Cours populaire dans cette catégorie MAÎTRISÉE JAVA - Spécialisation | 78 séries de cours | 15 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

getMethod() génère 3 types d'exceptions comme indiqué ci-dessous :-

  1. NoSuchMethodException
  2. NullPointerException
  3. Exception de sécurité

Syntaxe

Ci-dessous se trouve la signature de la getMethod de java.lang.Class

public Method getMethod(String name, Class<?>... parameterTypes)
throws NoSuchMethodException, SecurityException
  • public : ce mot-clé détermine que la méthode donnée est accessible depuis n'importe quelle classe du projet.
  • Méthode de type de retour : Cette méthode renvoie une instance de la classe Method qui fait référence à la méthode requise dont le nom a été passé en arguments.
  • Paramètres :
  • Nom Ce paramètre fait référence à la représentation String du nom de la méthode présente dans la classe de référencement ou l'objet d'interface. Si aucune méthode de ce type n’est présente dans la classe, NoSuchMethodException est levée. Sinon, l'algorithme s'exécute et la méthode est renvoyée.
  • parameterTypes : il s'agit d'un tableau d'objets de type classe qui pointent vers les données que la méthode du paramètre name requiert comme arguments. La taille de ce tableau dépend des arguments requis par le nom de méthode spécifié. Si la méthode ne nécessite aucun argument, null est passé dans cet argument.

Exemples

Si nous avons une démo de classe comme indiqué ci-dessous :

class Demo{
public void method1(String a){
System.out.println(a);
}
}

Alors appeler pour getMethod serait comme :

Demo demoObj= new Demo();// Object of Demo class
Class cObj= demoObj.getClass()
Class [] carr = new Class[1];
carr[0] = String.class;// class reference to java.lang.String class stored In the array of type Class
Method mObj = cObj.getMethod("method1",carr);

Comment fonctionne getMethod() en Java ?

getMethod() renvoie une instance de méthode à la méthode spécifiée dans la classe de référencement ou l'objet d'interface.

  • Il prend un paramètre name de type de données String qui contient le nom de la méthode publique qui doit être trouvée dans la classe ou l'interface spécifiée. Il faut également un tableau d'objets de classe qui représentent les types d'arguments pour la fonction que nous recherchons.
  • JVM lit les deux arguments et exécute un algorithme de recherche identique à celui utilisé dans la méthode privateGetPublicMethods() dans java.lang.Class et recherche si la méthode publique portant le nom spécifié est présente ou non. Si plusieurs méthodes sont présentes dans la classe, celle avec un type de retour plus spécifique est renvoyée. Sinon, la méthode est choisie arbitrairement.

S'il trouve la méthode, il renvoie une instance de Method Class contenant sa référence.

Si la méthode spécifiée n'a besoin d'aucun argument, alors null est passé à la place de paramètreType. Cela aide en cas de surcharge de méthode, où nous avons plusieurs méthodes portant le même nom mais différant par le nombre ou les types de données d'arguments. Cette méthode génère 3 types d'exceptions :-

1. NoSuchMethodException : ce type d'exception est levé lorsque JVM n'est en mesure de trouver aucune méthode portant le nom spécifié dans la classe ou l'interface.

2. SecurityException : ce type d'exception est généré lorsque

  • checkMemberAccess(this, Member.PUBLIC) est invoqué, en refusant l'accès.
  • Le chargement de la classe appelante est différent du chargeur de l'ancêtre de la classe actuelle ; ainsi, SecurityManagers.checkPackageAccess() est invoqué ; ainsi, l'accès au colis est refusé.

3. NullPointerException : ceci est levé si null est passé à la place du nom de la méthode dans les arguments.

Exemples d'implémentation de Java getMethod()

Voici les exemples mentionnés :

Exemple n°1

Dans cet exemple, nous montrerons le résultat d'un appel getMethod à deux méthodes de la classe Office, l'une qui nécessite des objets et l'autre n'a pas besoin d'argument.

//package Proc;
import java.lang.reflect.*;
class Office{
public String OfficeLocation() {
return location;
}
public String getEmpName(Integer eid) {
return"Sergio";
}
String location = "Bangalore";
}
public class prac1 {
public static void main(String[] args) {
Office ofc = new Office();
Class cObj = ofc.getClass();
Class[] carr = new Class[1];
carr[0] = Integer.class;
try {
Method meth = cObj.getMethod("OfficeLocation", null);
System.out.println("Method with specified name is = " + meth.toString());
} catch(NoSuchMethodException e) {
System.out.println(e.toString());
}
try {
Method meth = cObj.getMethod("getEmpName", carr);
System.out.println("Method with specified name is = " + meth.toString());
} catch(NoSuchMethodException e) {
System.out.println(e.toString());
}
}
}

Sortie :

JavagetMethod()

Exemple n°2

Dans cet exemple, nous verrons si JVM est capable de trouver des méthodes privées dans la classe portant le nom donné.

//package Proc;
import java.lang.reflect.*;
public class prac1 {
public static void main(String[] args) {
Office ofc = new Office();
Class cObj = ofc.getClass();
try {
Method meth = cObj.getMethod("OfficeLocation", null);
System.out.println("Method with specified name is = " + meth.toString());
} catch(NoSuchMethodException e) {
System.out.println(e.toString());
}
}
}
class Office{
private String OfficeLocation() {
return location;
}
public String getEmpName(Integer eid) {
return "Sergio";
}
String location = "Bangalore";
}

Sortie :

JavagetMethod()

Example #3

In this example , we will see how different exceptions occur when a non-existing method is called, and null is passed in the method’s name.

//package Proc;
import java.lang.reflect.*;
class Office{
public String OfficeLocation() {
return location;
}
public String getEmpName(Integer eid) {
return "Sergio";
}
String location = "Bangalore";
}
public class prac1 {
public static void main(String[] args) {
Office ofc = new Office();
Class cObj = ofc.getClass();
Class[] carr = new Class[1];
carr[0] = Integer.class;
try {
Method meth = cObj.getMethod("show", null);
System.out.println("Method found " + meth.toString());
} catch(NoSuchMethodException e) {
System.out.println(e.toString());
}
try {
Method meth = cObj.getMethod(null, carr);
System.out.println("Method found" + meth.toString());
} catch(NoSuchMethodException e) {
System.out.println(e.toString());
}catch(NullPointerException e) {
System.out.println(e.toString());
}
}
}

Output:

JavagetMethod()

Conclusion

Java.lang.getMethod() is a method used to search if a method with the given name and type of arguments is present in the class or not. It uses the same algorithm to find the method used in the privateGetPublicMethods() method. JVM search for the given public method and returns a Method instance; otherwise, NoSuchMethodException is raised.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Adresse Inet JavaArticle suivant:Adresse Inet Java