这些天我正在学习Java泛型。现在,我正在经历“类型橡皮擦”的概念。我已经编写了一个基于this的小java程序。下面是我的完整代码:
/*
* Bridge method demonstration
*/
class Node<T>{
public T data;
public Node(T data){
this.data = data;
}
public void setData(T data){
System.out.println("Node.setData");
this.data = data;
}
}
class MyNode extends Node<Integer>{
public MyNode(Integer data){ super(data); }
public void setData(Integer data){
System.out.println("MyNode.setData");
super.setData(data);
}
}现在,下面的代码抛出ClassCastException:
// Bridge method demo
System.out.println("Demonstrating bridge method:");
MyNode mn = new MyNode(5);
Node n = mn;
n.setData("Hello");
Integer x = mn.data;错误:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at MyNode.setData(genericfirst.java:96)
at genericfirst.main(genericfirst.java:177)有没有人能帮我弄清楚到底是什么导致了这个问题。由于我无法猜测发生了什么,我想我没有正确理解桥接方法的概念。如果有人也能解释一下桥接方法,那将是有帮助的。
发布于 2014-10-31 16:53:01
您正在尝试将String值放入Integer中,这就是为什么会出现此异常。
尝试像这样使用parseInt():
Integer x = Integer.parseInt(mn.data);https://stackoverflow.com/questions/26670531
复制相似问题