Heim > Java > javaLernprogramm > Java getMethod()

Java getMethod()

PHPz
Freigeben: 2024-08-30 15:39:49
Original
1104 Leute haben es durchsucht

Java getMethod() ist eine Methode in java.lang.Class.getMethod(), die eine Instanz der Method-Klasse im Paket java.lang.reflect zurückgibt, die die Referenz einer bestimmten öffentlichen Mitgliedsfunktion enthält, die in der angegebenen Klassenobjektreferenz vorhanden ist zu einer Klasse oder Schnittstelle. Diese Methode verwendet als ersten Parameter den Namen der zu übergebenden Methode. Der zweite zu übergebende Parameter ist ein Array von Objekten der Klasse „Class“, die die formalen Parameterdatentypen der zurückgegebenen Methode bestimmen, oder ein leeres Array, das „null“ als paramterTypes bestimmt. Der dabei verwendete Suchalgorithmus ist derselbe wie bei der privaten GetPublicMethods()-Methode.

WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

getMethod() löst drei Arten von Ausnahmen aus, wie unten angegeben:-

  1. NoSuchMethodException
  2. NullPointerException
  3. SecurityException

Syntax

Unten ist die Signatur der getMethod von java.lang.Class

public Method getMethod(String name, Class<?>... parameterTypes)
throws NoSuchMethodException, SecurityException
Nach dem Login kopieren
  • public: Dieses Schlüsselwort legt fest, dass von jeder Klasse im Projekt aus auf die angegebene Methode zugegriffen werden kann.
  • Methode des Rückgabetyps: Diese Methode gibt eine Instanz der Methodenklasse zurück, die auf die erforderliche Methode verweist, deren Name als Argumente übergeben wurde.
  • Parameter:
  • Name Dieser Parameter bezieht sich auf die String-Darstellung des Namens der Methode, die in der referenzierenden Klasse oder dem Schnittstellenobjekt vorhanden ist. Wenn in der Klasse keine solche Methode vorhanden ist, wird NoSuchMethodException ausgelöst. Andernfalls wird der Algorithmus ausgeführt und die Methode zurückgegeben.
  • parameterTypes: Dies bezieht sich auf ein Array von Objekten vom Typ Klasse, die auf die Daten verweisen, die die Methode im Namensparameter als Argumente benötigt. Die Größe dieses Arrays hängt von den Argumenten ab, die für den angegebenen Methodennamen erforderlich sind. Wenn die Methode keine Argumente erfordert, wird null an dieses Argument übergeben.

Beispiele

Wenn wir eine Klassendemo wie unten angegeben haben:

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

Dann würde der Aufruf von getMethod wie folgt aussehen:

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);
Nach dem Login kopieren

Wie funktioniert getMethod() in Java?

getMethod() gibt eine Methodeninstanz an die angegebene Methode in der referenzierenden Klasse oder dem Schnittstellenobjekt zurück.

  • Es wird ein Namensparameter vom Datentyp „String“ benötigt, der den Namen der öffentlichen Methode enthält, die in der angegebenen Klasse oder Schnittstelle gefunden werden muss. Es benötigt außerdem ein Array von Klassenobjekten, die die Argumenttypen für die gesuchte Funktion darstellen.
  • JVM liest die beiden Argumente und führt einen Suchalgorithmus aus, der derselbe ist, der in der Methode privateGetPublicMethods() in java.lang.Class verwendet wird, und sucht, ob die öffentliche Methode mit dem angegebenen Namen vorhanden ist oder nicht. Wenn in der Klasse mehr als eine Methode vorhanden ist, wird die Methode mit einem spezifischeren Rückgabetyp zurückgegeben. Andernfalls wird die Methode willkürlich gewählt.

Falls es die Methode findet, gibt es eine Instanz der Methodenklasse zurück, die ihre Referenz enthält.

Wenn die angegebene Methode kein Argument benötigt, wird null anstelle von ParameterType übergeben. Dies hilft im Fall einer Methodenüberladung, bei der wir mehr als eine Methode mit demselben Namen haben, sich aber in der Anzahl oder den Datentypen der Argumente unterscheiden. Diese Methode löst drei Arten von Ausnahmen aus:-

1. NoSuchMethodException: Diese Art von Ausnahme wird ausgelöst, wenn JVM keine Methode mit dem angegebenen Namen in der Klasse oder Schnittstelle finden kann.

2. SecurityException: Diese Art von Ausnahme wird ausgelöst, wenn

  • checkMemberAccess(this, Member.PUBLIC) wird aufgerufen und verweigert den Zugriff darauf.
  • Das Laden der Aufruferklasse unterscheidet sich vom Lader des Vorgängers der aktuellen Klasse. daher wird SecurityManagers.checkPackageAccess() aufgerufen; Daher wird der Zugriff auf das Paket verweigert.

3. NullPointerException: Dies wird ausgelöst, wenn in den Argumenten null anstelle des Methodennamens übergeben wird.

Beispiele zur Implementierung von Java getMethod()

Im Folgenden finden Sie die genannten Beispiele:

Beispiel #1

In diesem Beispiel zeigen wir die Ausgabe eines getMethod-Aufrufs an zwei Methoden der Office-Klasse, eine, die Objekte erfordert, und die andere, die kein Argument benötigt.

//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());
}
}
}
Nach dem Login kopieren

Ausgabe:

Java getMethod()

Beispiel #2

In diesem Beispiel werden wir sehen, ob JVM in der Lage ist, private Methoden zu finden, die die Klasse mit dem angegebenen Namen sind.

//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";
}
Nach dem Login kopieren

Ausgabe:

Java getMethod()

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());
}
}
}
Nach dem Login kopieren

Output:

Java getMethod()

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.

Das obige ist der detaillierte Inhalt vonJava getMethod(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage