黑马程序员技术交流社区

标题: 很简单, 就是搞不明白。 [打印本页]

作者: 墓____夜    时间: 2014-6-17 12:28
标题: 很简单, 就是搞不明白。

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;


public class InnerClassTest
{
       public static void main(String[] args) throws Exception, SecurityException {
               List<String> list = new ArrayList<>();
               Method method=list.getClass().getMethod("add", int.class);
               method.invoke(list, 1245);
             for (String string : list) {
                        System.out.println(string);
                }
              
        }
         
}
没有结果,为什么
作者: majunm    时间: 2014-6-17 13:05
本帖最后由 majunm 于 2014-6-17 13:23 编辑

        public static void main(String[] args) throws Exception, SecurityException {
                List<String> list = new ArrayList<>();
                Method method = list.getClass().getMethod("add",Object.class);
                method.invoke(list, 12345);
                System.out.println(String.valueOf(list.get(0)));
                System.out.println(list.toString());
//反射过后,编译器对泛型进行擦除,(专业术语,你可以理解成不存在泛型限定),所以  list只有这个方法 list.add(Object obj);接受的参数是object  // Method method = list.getClass().getMethod("add",int.class); int.class 是错误的!
        }

QQ图片20140617131944.jpg (255.47 KB, 下载次数: 10)

QQ图片20140617131944.jpg

作者: zhanqq2010    时间: 2014-6-17 13:11
你list里面没有东西吧?
作者: 帅哥哥    时间: 2014-6-17 13:12
add的参数不对吧,有add(int x)这个重载函数吗,记得没有




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