如何将String转换为泛型类型<e>?

时间:2016-03-28 17:05:37

标签: java string generics binary-tree

我有一个二叉树BinaryTree<E>,其中包含以下变量

protected E data;
protected BinaryTree<E> left,right;

由教授给我,并被要求使用以下代码(仅显示此处显示的相关代码)将我成功完成的每个节点的值加倍:

if (data != null) {
  this.setData(String.valueOf(Integer.parseInt(getData().toString()) * 2));
}

不幸的是,这引发了以下警告我想摆脱:

1 error found:
Error: incompatible types: java.lang.String cannot be converted to E

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您必须使用E作为参数来实现setData。如果使用输入参数类型String实现setData,那么它将抛出一个错误,即String无法转换为E.请参阅下面的代码:

time_major=True

取消注释后的注释行会导致您在问题中提到的相同错误。

答案 1 :(得分:0)

您的BinaryTree是一种通用类型,因此每次使用时都是如此 this.setData(...)它会期望你在其中设置的任何类型,它都是E类型。

因此,您的代码将起作用,您将不得不添加E数据类型。

所以,你有两个解决方案:

  • 删除BinaryTree类的E,您的数据字段/方法将存储&#34; java.lang.Object&#34;所以你可以直接将数据设置为字符串或更好的盒装双(新的Double(...))

  • 你使用BinaryTree类,例如你的add值,使用BinaryTree的专用版本,如:BinaryTree node = new BinaryTreeNode(); node.setData(new Double(3.5));