shaoxiao64017599
2017-03-14 20:38
package com.imooc.Class;
import java.lang.reflect.Method;
import java.util.ArrayList;
public class Genericity {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList list = new ArrayList();
ArrayList<String> list1 = new ArrayList<String>();
list.add("Hello");
//list1.add(20);
Class c1 = list.getClass();
Class c2 = list1.getClass();
System.out.println(c1==c2);
System.out.println(list1.size());
try {
Method m = c2.getMethod("add", Object.class);
m.invoke(list1, 20);
m.invoke(list1, "Hello");//老师没有这句且返回list1的size是2。我自己加上返回的是2
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
System.out.println(list1.size());
}
}老师不是往list1中只加了一个20么?为什么最后list1的size是2呢?
第12行代码写错了,应该是list1.add("hello");
就是啊 你加错地方了 list1只添加了一个当然长度是1了
list.size()获取的是元素的个数
尴尬,1楼正解
不好意思,回答错了,int类型应该是占四个字节,但是添加20的时候没有指定类型,是有java虚拟机自己决定的
因为在java中int类型的变量占两个字节
反射——Java高级开发必须懂的
151739 学习 · 343 问题
相似问题