在这个问题中 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)
答案 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");