A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. <P>import java.lang.reflect.Method;</P>
  2. <P>public class Test11 {</P>
  3. <P> /**
  4.   * @param args
  5.   */
  6. public static void main(String[] args) {
  7.   // TODO Auto-generated method stub
  8.   System.out.println(String.class);
  9.   System.out.println(String.class.getModifiers());
  10.   Method[] M = new Method[String.class.getMethods().length];
  11.   for (int i = 0; i < M.length; i++) {
  12.    System.out.println(M[i]+""+i);
  13.   }
  14. }</P>
  15. <P>}</P>
复制代码

for循环中的打印结果都是null,不是说返回方法吗?为什么是null呢?

另外,求大神详细解释下反射的含义,详细,不是“反射就是把java类中的各种成分映射成相应的Java类”,最好能举例说明,谢谢!!{:soso_e105:}{:soso_e105:}

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

2 个回复

正序浏览

  1. import java.lang.reflect.Method;
  2. public class Test11 {
  3. /**
  4.   * @param args
  5.   */
  6. public static void main(String[] args) {
  7.   // TODO Auto-generated method stub
  8.   System.out.println(String.class);
  9.   System.out.println(String.class.getModifiers());
  10.   Method[] M =String.class.getMethods();//把这个类中的方法放在数组中
  11.   System.out.println(M.length);//获取数组长度
  12.   for (int i = 0; i < M.length; i++) {
  13.    System.out.println(M[i]+"..."+i);
  14.   }
  15. }
  16. }
复制代码
回复 使用道具 举报
Method[] m = String.class.getMethods();
for(Method method : m){
           System.out.println(method.getName());
}
以上代码才会得到String类中各方法的名称。在你的代码中是创建了一个等同于String类方法个数的Method数组,而没有对他进行初始化,所以它的引用值都为null.
至于那句经典:反射就是把java类的各个成分映射成为相应的java类,举个例子,比如java类中有成员变量、成员方法、构造方法等等,就把这些成员的共性抽取定义成无差别的Constructor、Method、Field类等等,然后可以通过反射的方式调用,如同上面的Method调用。

拙见仅供参考,我也坐等大神回答呢。。。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马