• 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

  • 相关阅读:
    python用win32com模拟浏览器
    python判断输入的字符串是否为数字
    phpwind9.0去掉头部版权信息 Powered by phpwind
    Python批量查询网站收录
    结巴分词 python中文分词
    phpwind 9.0 RC版[20121108],伪静态无效的问题
    [转]LINQ: Building an IQueryable provider series
    获取鼠标选择的文本内容之JavaScript代码
    M2级遍历和范围Range
    转:浏览器的用户代理字符串
  • 原文地址:https://www.cnblogs.com/fpqi/p/9618413.html
Copyright © 2020-2023  润新知