对象类抛出类强制转换异常

时间:2017-10-11 09:04:09

标签: java

在这个问题中 ItemEvent的方法getIten()返回Object,日期声明为int类型。 但是当我将类型转换后的对象项等同于Integer时。

public  void itemStateChanged(ItemEvent  e)
 {
  Object item = e.getItem();
  if ((Integer)item==date) System.out.println("ok ");
   else System.out.println(" not ok");
  }

我得到了例外

   Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at View.Alarm.itemStateChanged(Alarm.java:77)
    at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)
    at javax.swing.JComboBox.selectedItemChanged(Unknown Source)

2 个答案:

答案 0 :(得分:0)

java.lang.String cannot be cast to java.lang.Integer

那是因为您的e.getItem()返回String,因此您无法将其强制转换为Integer。尝试做:

if (Integer.parseInt((String)item)==date) System.out.println("ok ");

答案 1 :(得分:0)

有了你得到的错误,你会期望getItem()返回一个String,即使getItem返回一个Object。因为String是一个Object。

您可以使用

if (Integer.valueOf(item.toString())==date) 
    System.out.println("ok ");
else 
    System.out.println(" not ok");