Rumah > Java > javaTutorial > teks badan

Java getMethod()

PHPz
Lepaskan: 2024-08-30 15:39:49
asal
1031 orang telah melayarinya

Java getMethod() ialah kaedah dalam java.lang.Class.getMethod() yang mengembalikan contoh kelas Kaedah dalam pakej java.lang.reflect yang memegang rujukan fungsi ahli awam yang diberikan dalam rujukan objek Kelas yang diberikan kepada kelas atau antara muka. Kaedah ini mengambil nama kaedah yang perlu diluluskan sebagai parameter pertamanya. Parameter kedua yang akan diluluskan ialah tatasusunan objek Kelas yang menentukan jenis data parameter formal kaedah yang dikembalikan atau tatasusunan kosong yang menentukan null sebagai paramterTypes. Algoritma carian yang digunakan dalam ini adalah sama seperti kaedah GetPublicMethods() peribadi.

IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

getMethod() membuang 3 jenis pengecualian seperti yang diberikan di bawah:-

  1. NoSuchMethodException
  2. NullPointerException
  3. SecurityException

Sintaks

Di bawah ialah tandatangan getMethod java.lang.Class

public Method getMethod(String name, Class<?>... parameterTypes)
throws NoSuchMethodException, SecurityException
Salin selepas log masuk
  • awam: Kata kunci ini menentukan bahawa kaedah yang diberikan boleh diakses daripada mana-mana kelas dalam projek.
  • Kaedah Jenis Pulangan: Kaedah ini mengembalikan tika kelas Kaedah yang merujuk kepada kaedah yang diperlukan yang namanya telah diluluskan sebagai argumen.
  • Parameter:
  • Nama Parameter ini merujuk kepada perwakilan rentetan nama kaedah yang terdapat dalam kelas rujukan atau objek antara muka. Jika tiada kaedah sedemikian terdapat dalam kelas, NoSuchMethodException dinaikkan. Jika tidak, algoritma berjalan dan kaedah dikembalikan.
  • parameterTypes: Ini merujuk kepada tatasusunan objek jenis Kelas yang menghala ke data yang diperlukan oleh kaedah dalam parameter nama sebagai argumen. Saiz tatasusunan ini bergantung pada argumen yang diperlukan oleh nama kaedah yang ditentukan. Jika kaedah tidak memerlukan hujah, null dihantar ke dalam hujah ini.

Contoh

Jika kami mempunyai Demo kelas seperti yang diberikan di bawah:

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

Kemudian panggilan untuk mendapatkanMethod akan menjadi seperti:

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);
Salin selepas log masuk

Bagaimana getMethod() berfungsi dalam Java?

getMethod() mengembalikan contoh Kaedah kepada kaedah yang ditentukan dalam kelas rujukan atau objek antara muka.

  • Ia memerlukan parameter nama jenis data String yang memegang nama kaedah awam yang perlu ditemui dalam kelas atau antara muka yang ditentukan. Ia juga memerlukan tatasusunan Objek Kelas yang mewakili jenis argumen untuk fungsi yang kami cari.
  • JVM membaca dua argumen dan melaksanakan algoritma carian yang sama seperti yang digunakan dalam kaedah privateGetPublicMethods() dalam java.lang.Class dan cari jika kaedah awam dengan nama yang ditentukan ada atau tidak. Jika terdapat lebih daripada satu kaedah dalam kelas, maka sekali dengan jenis pulangan yang lebih spesifik dikembalikan. Jika tidak, kaedah itu dipilih sewenang-wenangnya.

Sekiranya ia menjumpai kaedah, ia mengembalikan contoh Kelas Kaedah yang memegang rujukannya.

Jika kaedah yang ditentukan tidak memerlukan sebarang hujah, maka null diluluskan sebagai ganti parameterType. Ini membantu dalam kes kelebihan beban kaedah, di mana kami mempunyai lebih daripada satu kaedah dengan nama yang sama tetapi berbeza dalam bilangan atau jenis data argumen. Kaedah ini membuang 3 jenis pengecualian:-

1. NoSuchMethodException: Jenis pengecualian ini dilemparkan apabila JVM tidak dapat mencari sebarang kaedah dengan nama yang ditentukan dalam kelas atau antara muka.

2. SecurityException: Pengecualian jenis ini dilemparkan apabila

  • checkMemberAccess(ini, Member.PUBLIC) digunakan, menafikan akses kepadanya.
  • Beban kelas pemanggil berbeza daripada pemuat moyang kelas semasa; oleh itu, SecurityManagers.checkPackageAccess() digunakan; oleh itu, akses kepada pakej dinafikan.

3. NullPointerException: Ini dilemparkan jika null diluluskan sebagai ganti nama kaedah dalam argumen.

Contoh untuk Melaksanakan Java getMethod()

Di bawah adalah contoh yang dinyatakan:

Contoh #1

Dalam contoh ini, kami akan menunjukkan output panggilan getMethod kepada dua kaedah kelas Office, satu yang memerlukan objek dan satu lagi tidak memerlukan hujah.

//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());
}
}
}
Salin selepas log masuk

Output:

Java getMethod()

Contoh #2

Dalam contoh ini, kita akan melihat sama ada JVM dapat mencari kaedah persendirian ialah kelas dengan nama yang diberikan.

//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";
}
Salin selepas log masuk

Output:

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());
}
}
}
Salin selepas log masuk

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.

Atas ialah kandungan terperinci Java getMethod(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!