括号围绕数据类型?

时间:2012-02-18 21:31:08

标签: java

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

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

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

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

5 个答案:

答案 0 :(得分:9)

这称为铸造,见这里:

基本上,通过这样做:

IntElement temp = (IntElement) otherElement;  

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

您不能只使用IntElement temp = otherElement;这样做otherElementDataElement定义为IntElement成为其他元素,在本例中为instanceof。这将是对类型安全的一大打击,这就是首先定义类型的原因。

技术上可以使用类型推断来完成:

然而,Java不支持这一点,你必须明确。

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

  • 算/ TheinstanceofKeyword.htm“> HTTP://www.java2s.com/Tutorial/Java/0060_Operators/TheinstanceofKeyword.htm

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

答案 1 :(得分:2)

(IntElement)之后temp的目的是执行类型转换,更专业的是强制转换,其中你说的是otherElement,这是DataElement类型为IntElement的参数应作为更具体类型{{1}}的对象。

答案 2 :(得分:1)

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

有关Java Types and Type Conversion (Casting)的详细信息,请查看此链接。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

这是一个类型广告See the example here