Java:类型橡皮擦实现
这些天我在学习Java泛型。现在,我正在经历“类型橡皮擦”的概念。我已经编写了一个基于java的小程序。这是我的完整代码:Java:类型橡皮擦实现,java,Java,这些天我在学习Java泛型。现在,我正在经历“类型橡皮擦”的概念。我已经编写了一个基于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.setDa
/*
* 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);
}
}
错误:
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)
谁能帮我弄清楚到底是什么导致了这个问题。由于我猜不出发生了什么,我想我还没有正确理解桥接法的概念。如果有人也能解释一下桥接方法,那会很有帮助。您试图在
整数中放入字符串值,这就是为什么会出现此异常
试着像这样使用parseInt()
:
Integer x = Integer.parseInt(mn.data);
您没有将字符串类型转换为存储在integer对象中。有关详细信息,请参见此。问题是您选择忽略所有有关泛型的编译器警告,并最终导致代码中断。尝试更改节点n=mn编码>到正确的节点n=mn然后您将在n.setData(“Hello”)处得到一个正确的编译错误因为您调用的方法只接受一个整数,参数类型为String。
Integer x = Integer.parseInt(mn.data);