【发布时间】:2013-03-28 16:46:51
【问题描述】:
我正在用 Java 编写一个通用链表,除了一个问题外,一切正常。
列表节点保存一个类型为 E 的变量“数据”,而我在通用链表代码中也有一个类型为 E 的变量“tempData”。数据类型 E 将由程序使用链表确定。
我要做的是通过调用节点函数 getData() 从链接节点“数据”中检索变量并将其存储在一个名为 tempData 的变量中。
这是当前代码:
tempData = firstNode.getData();
我的问题是,在编译时我收到错误消息,说它们是“不兼容的类型”。我知道在运行时它们将是相同的数据类型,但我如何满足它的编译语法?
我已尝试将代码放入:
if( firstNode.getData() instanceof tempData.getClass() )
但它不起作用,因为类应该是不允许调用方法的。我也尝试了以下方法,但我仍然得到了原来的编译错误。
if( (firstNode.getData()).getClass == tempData.getClass() )
非常感谢任何和所有帮助,谢谢。
编辑 3-28-13
tempData 的声明是“E tempData;”
firstNode 的声明是“私有 ListNode firstNode;”
声明firstNode中的数据是“私有E数据”; .getData();
LinkedList 类“公共类 LinkedList E”的标题
ListNode 类“公共类 ListNode E”的标头
标题中的两个 E 周围都有小于和大于符号,它们只是在发布时不显示。
【问题讨论】:
-
您能否将 tempData 和 firstNode 的声明添加到您的问题中?会让我更容易看到我怀疑的问题。
-
@Jules E tempData;并在 firstNode(和所有节点)私有 E 数据;由 .getData() 返回
-
firstNode 本身及其 getData() 方法是如何声明的?
-
而且 firstNode 大概被声明为
ListNode<E> firstNode,是吗? (要使代码正确显示,请在其周围使用向后的单引号)。 -
原来我忘记在ListNode后面加上'
'了,非常感谢你的帮助
标签: java generics comparison