我是一名初学程序员,在我的教科书中遇到过这个问题:
public boolean equals(DataElement otherElement)
{
IntElement temp = (IntElement) otherElement;
return (num == temp.num);
}
Run Code Online (Sandbox Code Playgroud)
IntElement是.的子类DataElement.num是一个存储链表值的int.
(IntElement)之后的目的是temp =?什么IntElement temp = otherElement?而且,一般来说,将数据类型放在括号中的是什么呢?
这叫做铸造,见这里:
基本上,通过这样做:
IntElement temp = (IntElement) otherElement;
Run Code Online (Sandbox Code Playgroud)
你告诉编译器忽略你声明的事实otherElement,DataElement并相信你将成为一个IntElement而不是DataElement或其他一些子类DataElement.
在这种情况下,你不能IntElement temp = otherElement;像你所做的那样做otherElement,它被定义为DataElement一些其他元素IntElement.这对类型安全来说是一个很大的打击,这就是首先定义类型的原因.
从技术上讲,这可以使用类型推断来完成:
但Java不支持,你必须明确.
如果可以获取其他元素,您可能希望instanceof在转换之前使用以检查类型运行时:
在您完成此操作之后的某个时刻,您可能也想看看泛型:
| 归档时间: |
|
| 查看次数: |
4884 次 |
| 最近记录: |