括号围绕数据类型?

我是一名初学程序员,在我的教科书中遇到过这个问题:

public boolean equals(DataElement otherElement) { IntElement temp = (IntElement) otherElement; return (num == temp.num); } 

IntElementDataElement的子类。 num是存储链表的值的int。

temp =?后, (IntElement)的目的是什么temp =? IntElement temp = otherElement什么问题? 而且,一般来说,将数据类型放在括号中的是什么呢?

这叫做铸造,见这里:

基本上,通过这样做:

 IntElement temp = (IntElement) otherElement; 

你告诉编译器忽略你将otherElement声明为DataElement的事实,并且相信它将是一个IntElement而不是DataElementDataElement其他一些子类。

你不能只做IntElement temp = otherElement; 这样你就可以创建otherElement ,它被定义为DataElement成为其他一些元素,在本例中是IntElement 。 这对类型安全来说是一个很大的打击,这就是首先定义类型的原因。

从技术上讲,这可以使用类型推断来完成:

但Java不支持,你必须明确。

如果可以获取其他元素,您可能希望在转换之前使用instanceof检查类型运行时:

在您完成此操作后的某个时刻,您可能也想看看generics:

temp之后的(IntElement)的目的是执行类型转换,更技术上是一个(IntElement)类型转换,其中你说的是otherElement ,它是DataElement类型的参数,应该被视为更具体的类型IntElement的对象。

jmein是正确的,它告诉编译器/解释器将一个变量类型转换为另一个。 实际上,它只是告诉处理器将其视为另一种类型。 在C中,这是一个祝福和诅咒,在java中,看起来你正在写作,你必须转换变量来区别对待它。

(IntElement)将类型为DataElement的 otherElement强制转换为IntElement类型

有关Java类型和类型转换(Casting)的更多详细信息,请查看此链接。

它是一个类型转换请参见此处的示例