zoukankan      html  css  js  c++  java
  • java的反射机制之getDeclaredMethods和getMethods的区别

    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范例
    笔记本的硬盘坏了
    “References to generic type List should be parameterized”
    配置管理软件(configuration management software)介绍
    WinCE文件目录定制及内存调整
    使用Silverlight for Embedded开发绚丽的界面(3)
    wince国际化语言支持
    Eclipse IDE for Java EE Developers 与Eclipse Classic 区别
    WinCE Heartbeat Message的实现
    使用Silverlight for Embedded开发绚丽的界面(2)
  • 原文地址:https://www.cnblogs.com/fpqi/p/9618413.html
Copyright © 2011-2022 走看看