java的反射机制之getDeclaredMethods和getMethods的区别

Posted 浅水鱼潜水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的反射机制之getDeclaredMethods和getMethods的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java 核心类库之反射机制

Java之反射机制

Java基础知识之反射机制简介

Java基础之反射

Java之反射

java的反射机制