黑马程序员技术交流社区
标题:
反射的问题~
[打印本页]
作者:
万正
时间:
2012-3-25 19:34
标题:
反射的问题~
import java.util.*;
import java.lang.reflect.*;
public class Reflector {
public static void main(String[] args) throws Exception {
Set<String> s = new HashSet<String>();
s.add("foo");
Iterator it = s.iterator();
Method m = Iterator.class.getMethod("hasNext");//1
System.out.println(m.invoke(it));
}
}
复制代码
为什么上面1处的语句换成Method m = it.getClass().getMethod("hasNext");就报异常呢?
作者:
马云
时间:
2012-3-25 19:48
本帖最后由 马云 于 2012-3-25 23:09 编辑
it.getClass()返回的是HashSet内部的Iterator.class
你看下这个就明白了:System.out.println( it.getClass())-----------HashMap$KeyIterator
返回的就不是Iterator接口的.class
你在it.getClass()
的下一行加上
m.setAccessible(true);
可能这个在HashSet实现这个接口的时候把这个方法给加了修饰了。
还有一种方法就是
System.out.println( it.getClass()==Iterator.class);
返回的是false说明它两就不是一个.class
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2