getMethod()與getDeclaredMethod()的區別
阿新 • • 發佈:2018-12-12
getMethod():獲取自身能用所有的公共方法。1.類本身的public 2.繼承父類的public 3.實現介面的public
getDeclaredMethod():獲取類自身宣告的所有方法。
getMethod()獲取繼承父類的public方法舉例:
public class Father { public Father() { System.out.println("呼叫了父類構造方法"); } public void fatherSay() { System.out.println("我是爸爸"); } } public class Son extends Father { public Son() { // TODO Auto-generated constructor stub System.out.println("呼叫了子類構造方法"); } public void sonSay() { System.out.println("我你兒子"); } public static void main(String[] args) { Son son=new Son(); son.fatherSay(); } }
測試類:
public class test1 { public static void main(String[] args) { Class clazz=Son.class; try { //報錯 NoSuchMethodException Method method =clazz.getDeclaredMethod("fatherSay"); method.invoke(clazz.newInstance()); //執行結果: //呼叫了父類構造方法 //呼叫了子類構造方法 //我是爸爸 Method method2 =clazz.getMethod("fatherSay"); method2.invoke(clazz.newInstance()); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }