Java ClassCastException

时间:2015-05-04 02:58:14

标签: java classcastexception

您好我是Java的新手,并且在构建DoublyLinkedList时遇到了这个问题。我在运行测试程序时遇到此错误。任何人都可以建议我的代码修复?任何帮助是极大的赞赏! 错误信息: 线程“main”中的异常java.lang.ClassCastException:hw3.Deque $ Node无法强制转换为java.lang.Integer

  @SuppressWarnings("unchecked")
public E removeFirst(){                 // delete and return the item at the front
      Node temp=head;
      if (isEmpty()){ throw new NoSuchElementException(); }
      else{
          if(head.next==null){
              head=null;
              tail=null;
          }else{
                  head=head.next;
                  head.prev=null;
              }
          return (E) head;
          }
      }

2 个答案:

答案 0 :(得分:0)

System.out.printf("\nThe winner is %d\n", dq.removeFirst());

removeFirst返回Node而不是Integer

public E removeFirst(){ 
  Node temp=head;
  if (isEmpty()){ throw new NoSuchElementException(); }
  else{
      if(head.next==null){
          head=null;
          tail=null;
      }else{
              head=head.next;
              head.prev=null;
          }
      return (E) head; // head is of type Node
      }
  }

答案 1 :(得分:0)

这是非常可疑的:@SuppressWarnings("unchecked")。除非你有充分的理由,否则不要压制警告,在这些情况下,你通常应该添加一条评论说明这​​个原因。

如果删除此注释,您将在以下行中收到编译警告:

return (E) head;

将此更改为head.item将解决此问题,但更有可能是:

return temp.item;