Java 对象类引发类强制转换异常

Java 对象类引发类强制转换异常,java,Java,在这个问题上 ItemEvent的方法getIten()返回对象,并将日期声明为int类型。 但当我将类型转换后的对象项等效为整数时 public void itemStateChanged(ItemEvent e) { Object item = e.getItem(); if ((Integer)item==date) System.out.println("ok "); else System.out.println(" not ok"); } 我得到了一个例外

在这个问题上 ItemEvent的方法getIten()返回对象,并将日期声明为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)
这是因为e.getItem()返回字符串,所以不能将其转换为整数。试着做:

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

在出现错误时,您可能希望getItem()返回一个字符串,即使getItem返回一个对象也是如此。因为字符串是一个对象

你可以用

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

因此getItem()返回一个字符串。它返回一个对象“Object class”在这个问题中的任何地方都不明显,除了您不正确的标题。Event getItem返回对象,我已将其类型转换为integer,因此我的代码中有该对象请参阅属性EJPcheck此oracle链接获取getItem()引用getItem方法的方法EJP返回的对象不是字符串,但问题是如果我将其向下转换为int并与任何int值进行比较,为什么会出现此异常,并且使用if(Integer.parseInt(item.toString())==date)它正在工作now@akhilsinghal字符串是一个对象。你需要回顾一下基础知识。我不清楚@Patrick,如果我将这个返回对象向下转换为int,然后与int进行比较,那么为什么会出现异常,包括String,只用于Integer类和object类这两个东西我怀疑这个对象在内部某处使用的是toString方法
item
是一个字符串,而你呢无法将字符串强制转换为整数。您只能使用parseInt将字符串转换为int。当getItem方法返回一个对象时,并不意味着它可以是您想要的任何对象。对象只是每个对象的父类,因此,拥有一个对象意味着拥有一个对象而不知道其类型。在本例中,getItem返回的对象实际上是一个字符串,因此不能将其转换为整数,必须将其用作字符串,因为这就是它。了解继承和对象类
if (Integer.valueOf(item.toString())==date) 
    System.out.println("ok ");
else 
    System.out.println(" not ok");