黑马程序员技术交流社区

标题: 反射--成员方法 [打印本页]

作者: 杨庆雷    时间: 2014-8-8 02:10
标题: 反射--成员方法
  1. public class Test {
  2.        
  3.         public static void main(String[] args) {
  4.                 try {
  5.                         Object obj = ReflectPiont.class.newInstance();
  6.                         Method method = obj.getClass().getMethod("printStr",String.class);
  7.                         String str = "aaa";
  8.                         method.invoke(null,str);
  9.                        
  10.                         System.out.println("aaa");
  11.                 } catch (Exception e) {
  12.                         e.printStackTrace();
  13.                 }
  14.                
  15.         }

  16. }

  17. class ReflectPiont{
  18.        
  19.         private static void printStr(String str) {
  20.                 // TODO Auto-generated method stub
  21.                 System.out.println(str);
  22.         }
  23. }
复制代码
java.lang.NoSuchMethodException: com.itheima.ReflectPiont.printStr(java.lang.String)
        at java.lang.Class.getMethod(Unknown Source)
        at com.itheima.Test7.main(Test7.java:14)


这是怎么出错的


作者: 杨庆雷    时间: 2014-8-8 02:32
本帖最后由 杨庆雷 于 2014-8-8 02:35 编辑
  1. public class Test {
  2.        
  3.         public static void main(String[] args) {
  4.                 try {
  5.                         Test test = Test.class.newInstance();
  6.                         Method method = test.getClass().getMethod("printStr");
  7.                         method.invoke(test);
  8.                 } catch (Exception e) {
  9.                         e.printStackTrace();
  10.                 }
  11.         }
  12.         private void printStr() {
  13.                 // TODO Auto-generated method stub
  14.                 System.out.println("aaa");
  15.         }
  16. }
复制代码
原因找到了  把private void printStr()改为public void printStr()

作者: 阿磊    时间: 2014-8-8 08:45
呵呵  测试题吧
作者: justin1258    时间: 2014-8-8 09:42
getMethod是获取公共成员,你用getDeclaredMethod可以获取在这个类你面定义的所有方法。
作者: lspooooo    时间: 2014-8-8 16:45
getDeclaredMethod获取声明你的方法:也就是能够获取一个类中的所有方法
getMethod只能获取一个类中的公共方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2