2017-10-11 278 views
-2

在這個問題ItemEvent方法getIten返回對象和日期聲明爲int數據類型之前,並已正確初始化。 但是當我將類型轉換後的對象項目等同於Integer到int日期。對象類拋出類拋出異常

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

所以的getItem()返回一個字符串。 – Patrick

+0

它返回一個對象 –

回答

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

那是因爲你的e.getItem()返回字符串,所以你不能把它轉換爲整數。嘗試做:

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

getItem方法返回Object不是字符串,但事情是如果我downcast它爲int並比較任何int值爲什麼這個異常是存在,並通過使用if(Integer.parseInt(item.toString())==日期)它正在工作 –

+1

@akhilsinghal字符串是一個對象。您需要查看基礎知識。 – Patrick

+0

我不清楚@帕特里克如果我downcast這個返回對象爲int,然後與int比較然後爲什麼有包括字符串的異常只有兩個東西使用Integer類和對象類我懷疑這個對象內部使用toString方法 –

0

隨着你得到的錯誤,你會期望getItem()返回一個String,即使getItem返回一個Object。因爲字符串是一個對象。

你可能只是使用

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