ygyz03 2012-03-12 22:26 采纳率: 0%
浏览 246
已采纳

请各位大师帮我分析一下这是为什么会出现如下的现象

[code="java"]
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Date;

public class BaiduDemo05 {

public static void main(String[] args) throws NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    ArrayList<Integer> collection1 = new ArrayList<Integer>();
    collection1.getClass().getMethod("add", Object.class).invoke(collection1, "abc");
    System.out.println(collection1.get(0));//ABC

    ArrayList<String> collection2 = new ArrayList<String>();
    collection2.getClass().getMethod("add", Object.class).invoke(collection2, "abc");
    System.out.println(collection2.get(0));//ABC

    ArrayList collection22 = new ArrayList();
    collection22.getClass().getMethod("add", Object.class).invoke(collection22, "abc");
    System.out.println(collection22.get(0));//ABC

    ArrayList<Long> collection3 = new ArrayList<Long>();
    collection3.getClass().getMethod("add", Object.class).invoke(collection3, "abc");
    System.out.println(collection3.get(0));//ABC

    ArrayList<Date> collection4 = new ArrayList<Date>();
    collection4.getClass().getMethod("add", Object.class).invoke(collection4, 1);
    System.out.println(collection4.get(0));//ABC
}

}
[/code]
但是在将abc替换为1时,只有第2个,也就是collection2会出现异常,求解释,谢谢大师。

  • 写回答

10条回答 默认 最新

  • _1_1_7_ 2012-03-14 08:13
    关注

    至于“类型擦除”:
    [code="java"] ArrayList collection2 = new ArrayList();

    collection2.getClass().getMethod("add", Object.class).invoke(collection2, 1);

    System.out.println(collection2.get(0));//ABC

    [/code]

    编译后相当于:
    [code="java"]
    ArrayList collection2 = new ArrayList(); //这里是擦除了
    collection2.getClass().getMethod("add", Object.class).invoke(collection2, 1);

    System.out.println((String)collection2.get(0));//因为 PrintStream有对应的println(String s)的方法,所以会有强制类型转化。

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示