我注意到,有两种方法可以转换对象(不同之处在于外部括号的位置):
1. SimpleType simpleType = ((SimpleType) (property.getType()));
2. SimpleType simpleType = ((SimpleType) property).getType();
他们在做同样的事情吗?
最佳答案
否,但不是。
property.getType()
到SimpleType
。 (调用在转换之前完成)property
转换为SimpleType
,然后然后在其上调用
getType()
方法。 (在调用之前完成类型转换)。 您也可以从括号的开头理解它。由于它具有最高优先级,因此将首先对其进行评估。
第一种情况:-
因此,在
((SimpleType) (property.getType()));
中:-(property.getType())
首先评估,然后进行类型转换。实际上,您实际上并不需要括号。 (
property
比dot (.)
运算符更紧密地绑定(bind)到cast
运算符)。因此,调用将始终在强制转换之前完成。除非您在以下情况下强制将其反转:-第二种情况:-
在
((SimpleType) property).getType()
中:-((SimpleType) property)
首先评估,然后完成调用。如此,现在您已经将
property
括在方括号内,由于括号强制使用更高的优先级,因此它与cast
运算符的绑定(bind)更加紧密。