本帖最后由 想要那片海 于 2015-6-14 21:32 编辑
- 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<String> it=s.iterator();
-
- System.out.println(it.getClass());//结果class java.util.HashMap$KeyIterator
- System.out.println(Iterator.class);//结果interface java.util.Iterator
- /*所以,通过迭代器对象的getClass方法获取的字节码是针对于属于该集合的特定的迭代器对象的字节码
- * 而hasNext 方法是存在于Iterator接口中,所以要使用Iterator.class,获取接口的字节码来获取方法
- * */
- Method m=Iterator.class.getMethod("hasNext");
- //也不能使用 Class.forName("Iterator"),因为Iterator是一个接口,
- //这种通过类名获取字节码的方法不适用与接口
- System.out.println(m.invoke(it));
- }
- }
复制代码
|