1.getMethods和getDeclaredMethods的区别
返回值如下:reflect.Hello
-------------getDeclaredMethods------------
s
h
---------------getMethods----------------
s
say
wait
wait
waite
quals
toString
hashCode
getClass
notify
notifyAll
可以很清晰的看到,getDeclaredMethods会返回此类中的所有方法,不论是public还是private而getMethods则仅仅返回public方法,
但是它还包括其超类中的public方法2.获取Method对象通过getMethod(String methodName,Class... parameterTypes)方法,
getMethods得到通过getDeclaredMethod,getDeclaredMethods得到,其中getMethods和getDeclaredMethods返回的是Method对象数 组
3.method.invoke(Object obj,Object args)第一个参数为所执行方法的类对象,第二个传入的是此方法的参数
public class Say { public void say(){} private void haha(){} } public class Hello extends Say { private void h(){} public void s(){} }
public class Test { public static void main(String[] args) { try { TestDemo(); } catch (Exception e) { System.out.println("error:"+e.getMessage()); } } private static void TestDemo() throws Exception { Class userDaoClass = Hello.class; System.out.println(userDaoClass.getName()); System.out.println("-------------getDeclaredMethods------------"); Method[] method = userDaoClass.getDeclaredMethods(); for(int i=0;i<method.length;i++) { System.out.println(method[i].getName()); } Method[] methods = userDaoClass.getMethods(); System.out.println("---------------getMethods----------------"); for(int i=0;i<methods.length;i++) { System.out.println(methods[i].getName()); } } }