Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数据类型周围的括号?_Java - Fatal编程技术网

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
。这将是对类型安全性的一个巨大打击,这也是在第一时间定义类型的原因

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

但是Java不支持这一点,您必须明确

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

  • 运算符/TheinstanceofKeyword.htm“>http://www.java2s.com/Tutorial/Java/0060_Operators/TheinstanceofKeyword.htm
在完成这些之后的某个时候,您可能还想看看泛型:


这是一种类型转换

如果jmein是正确的,它会告诉编译器/解释器将一种变量类型转换为另一种类型。实际上,它只是告诉处理器将其视为另一种类型。在C中,这是一种幸事,在java中,这看起来像是在编写的,您必须转换变量以区别对待它