Java 数据类型周围的括号?
我是一名初级程序员,在我的教科书中发现了这一点:Java 数据类型周围的括号?,java,Java,我是一名初级程序员,在我的教科书中发现了这一点: public boolean equals(DataElement otherElement) { IntElement temp = (IntElement) otherElement; return (num == temp.num); } IntElement是DataElement的子类num是存储链表值的整数 在temp=?之后使用(IntElement)的目的是什么IntElement tem
public boolean equals(DataElement otherElement)
{
IntElement temp = (IntElement) otherElement;
return (num == temp.num);
}
IntElement
是DataElement
的子类num
是存储链表值的整数
在temp=?
之后使用(IntElement)
的目的是什么IntElement temp=otherElement
会有什么问题?一般来说,将数据类型放在括号中做什么?(IntElement)将属于数据元素类型的其他元素强制转换为IntElement
查看此关于的链接以获得更详细的说明。在
temp
之后(inteelement)
的目的是执行类型转换,更严格地说,是一个cast,其中您说的是otherElement
,它是DataElement
类型的参数,应视为更具体类型的对象IntElement
这称为浇铸,请参见此处:
IntElement temp = (IntElement) otherElement;
您告诉编译器忽略您将otherElement
声明为DataElement
的事实,并相信它将是inteelement
而不是DataElement
或DataElement
的其他子类
不能只执行IntElement temp=otherElement
通过这种方式,您可以使定义为DataElement
的otherElement
成为其他元素,在本例中是inteelement
。这将是对类型安全性的一个巨大打击,这也是在第一时间定义类型的原因
这在技术上可以使用类型推断来完成:
instanceof
检查类型运行时:
- 运算符/TheinstanceofKeyword.htm“>http://www.java2s.com/Tutorial/Java/0060_Operators/TheinstanceofKeyword.htm