Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:类型橡皮擦实现_Java - Fatal编程技术网

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

这些天我在学习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.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=mnn.setData(“Hello”)处得到一个正确的编译错误 Integer x = Integer.parseInt(mn.data);