括号围绕数据类型?
我是一名初学程序员,在我的教科书中遇到过这个问题:
public boolean equals(DataElement otherElement) { IntElement temp = (IntElement) otherElement; return (num == temp.num); }
IntElement
是DataElement
的子类。 num
是存储链表的值的int。
temp =?
后, (IntElement)
的目的是什么temp =?
IntElement temp = otherElement
什么问题? 而且,一般来说,将数据类型放在括号中的是什么呢?
这叫做铸造,见这里:
基本上,通过这样做:
IntElement temp = (IntElement) otherElement;
你告诉编译器忽略你将otherElement
声明为DataElement
的事实,并且相信它将是一个IntElement
而不是DataElement
或DataElement
其他一些子类。
你不能只做IntElement temp = otherElement;
这样你就可以创建otherElement
,它被定义为DataElement
成为其他一些元素,在本例中是IntElement
。 这对类型安全来说是一个很大的打击,这就是首先定义类型的原因。
从技术上讲,这可以使用类型推断来完成:
但Java不支持,你必须明确。
如果可以获取其他元素,您可能希望在转换之前使用instanceof
检查类型运行时:
- 运营商/ TheinstanceofKeyword.htm“> http://www.java2s.com/Tutorial/Java/0060_Operators/TheinstanceofKeyword.htm
在您完成此操作后的某个时刻,您可能也想看看generics:
temp
之后的(IntElement)
的目的是执行类型转换,更技术上是一个(IntElement)
类型转换,其中你说的是otherElement
,它是DataElement
类型的参数,应该被视为更具体的类型IntElement
的对象。
jmein是正确的,它告诉编译器/解释器将一个变量类型转换为另一个。 实际上,它只是告诉处理器将其视为另一种类型。 在C中,这是一个祝福和诅咒,在java中,看起来你正在写作,你必须转换变量来区别对待它。
(IntElement)将类型为DataElement的 otherElement强制转换为IntElement类型
有关Java类型和类型转换(Casting)的更多详细信息,请查看此链接。
它是一个类型转换请参见此处的示例