java的反射機制之getDeclaredMethods和getMethods的區別
阿新 • • 發佈:2018-09-10
-c col random sys rgs methods ember min ()
getMethods()
返回一個包含某些 Method 對象的數組,這些對象反映此 Class 對象所表示的類或接口(包括那些由該類或接口聲明的以及從超類和超接口繼承的那些的類或接口)的公共 member 方法。註意: 返回數組中的元素沒有排序,也沒有任何特定的順序。
1 package staticMethodReflect; 2 3 import java.lang.reflect.Method; 4 5 class ForMethod{ 6 //聲明靜態方法 7 public static void sayHello(String name){8 System. out.println( "你好" +name +"!!!" ); 9 } 10 public String generateNum( Integer max, Integer min){ 11 return (Math.random()*( max- min)+ min)+ ""; 12 } 13 } 14 public class method { 15 16 public static void main(String[] args){ 17 //創建ForMethod類對象 18 ForMethod fm = new ForMethod(); 19 //獲取ForMethod類對象對用的Class對象 20 Class<?> fmc = fm.getClass(); 21 //獲取可以訪問的對象的對應的Method數組 22 Method[] md = fmc.getMethods(); 23 24 for(int i=0;i<md.length;i++){ 25 System.out.println(md[i].getName());26 } 27 } 28 }
每次運行的結果順序都不太一樣。
getDeclaredMethods()
返回 Method 對象的一個數組,這些對象反映此 Class 對象表示的類或接口聲明的所有方法,包括公共、保護、默認(包)訪問和私有方法,但不包括繼承的方法。返回數組中的元素沒有排序,也沒有任何特定的順序。
1 package staticMethodReflect; 2 3 import java.lang.reflect.Method; 4 5 class ForMethod{ 6 //聲明靜態方法 7 public static void sayHello(String name){ 8 System. out.println( "你好" +name +"!!!" ); 9 } 10 public String generateNum( Integer max, Integer min){ 11 return (Math.random()*( max- min)+ min)+ ""; 12 } 13 } 14 public class method { 15 16 public static void main(String[] args){ 17 //創建ForMethod類對象 18 ForMethod fm = new ForMethod(); 19 //獲取ForMethod類對象對用的Class對象 20 Class<?> fmc = fm.getClass(); 21 //獲取可以訪問的對象的對應的Method數組 22 Method[] md = fmc.getDeclaredMethods(); 23 24 for(int i=0;i<md.length;i++){ 25 System.out.println(md[i].getName()); 26 } 27 }
調用getDeclaredMethods只打印了本類的方法,沒有打印從父類繼承的方法。
本文轉自: https://blog.csdn.net/hanxueyu666/article/details/71502143
java的反射機制之getDeclaredMethods和getMethods的區別