deviceName=(String)alarmDev.get("10");因为get()返回的是Object对象。

解决方案 »

  1.   

    deviceName=alarmDev.get(String.valueOf(10));
    改成:
    deviceName = (String)alarmDev.get(String.valueOf(10));
      

  2.   

    deviceName是什么类型?如果不是Object就转换一下。郁闷。
      

  3.   

    问题已经解决,谢谢以上各位!
    再最后问一下,get()返回的是Object对象,那String不也是object吗
    怎末就不行呢?为啥非要这样:
    deviceName = (String)alarmDev.get(String.valueOf(10));
    这样:
    deviceName = alarmDev.get(String.valueOf(10));
    就不行呢?
      

  4.   

    因为你Object不一定是String,所以你将一个Object转换成为String的时候必须强制类型转换
      

  5.   

    正因为是String才可以转,String是Object的子类,父类到子类要强制转换.
    这样理解比较好:儿子花老爸的钱理所当然,老爸要儿子的钱就得抢了.
      

  6.   

    向上转型可以直接,但向下转型必须明确指定。就好比如果你跟别人说:“我给你一个苹果,就是给了你一个水果”,别人不会反对;但如果反过来,你说“我给你一个水果,就是给了你一个苹果。”别人就会问一下:“你确定吗?确定是苹果而不是别的水果?”在上面的例子,强制转换就等于告诉编译器:“我确定我的这个object是string,您放心吧”。没有这个“确定”,编译器不会放心的。
      

  7.   

    从hashtable里取出来的是object型的对象,付给String需要向下转型
      

  8.   

    Object对象都有一个自带toString()方法,如果遇到象上面着样的问题,在后面加上".toString()"就可以了。
    例如:
    Hashtable  alarmDev =new Hashtable();
    alarmDev.put("10","64");
    String str=alarmDev.get(String.valueOf(10)).toString()
    就可以了。
    写代码的时候要多注意一下类型转换的问题。
      

  9.   

    deviceName=(String)alarmDev.get("10");