Java getMethod() 是java.lang.Class.getMethod() 中的一個方法,它傳回java.lang.reflect 套件中Method 類別的實例,該實例保存給定Class 物件參考中存在的給定公共成員函數的引用到一個類別或介面。此方法將需要傳遞的方法的名稱作為其第一個參數。要傳遞的第二個參數是 Class 物件數組,用於確定傳回方法的形式參數資料類型,或是空數組,用於確定 paramterTypes 為 null。這裡使用的搜尋演算法與私人 GetPublicMethods() 方法相同。
廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
getMethod() 拋出 3 種類型的例外,如下:-
下面是java.lang.Class的getMethod的簽章
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
範例
如果我們有一個如下所示的類別示範:
class Demo{ public void method1(String a){ System.out.println(a); } }
然後呼叫 getMethod 就會像:
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);
getMethod() 傳回引用類別或介面物件中指定方法的 Method 實例。
如果它找到該方法,它會傳回一個保存其引用的方法類別實例。
如果指定的方法不需要任何參數,則傳遞 null 來取代parameterType。這在方法重載的情況下很有幫助,在這種情況下,我們有多個具有相同名稱但參數數量或資料類型不同的方法。此方法會拋出 3 種類型的例外:-
1。 NoSuchMethodException:當 JVM 無法在類別或介面中找到任何具有指定名稱的方法時,請拋出此類例外。
2。 SecurityException:當
時拋出此類異常3。 NullPointerException:如果傳遞 null 來取代參數中的方法名稱,則會拋出此例外。
以下是提到的範例:
在此範例中,我們將顯示對 Office 類別的兩個方法的 getMethod 呼叫的輸出,一個需要對象,另一個不需要參數。
//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()); } } }
輸出:
在這個範例中,我們將看看 JVM 是否能夠找到具有給定名稱的類別的私有方法。
//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"; }
輸出:
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:
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.
以上是Java getMethod()的詳細內容。更多資訊請關注PHP中文網其他相關文章!