我注意到有两种方法可以转换对象(区别在于外括号的位置):
 1. SimpleType simpleType = ((SimpleType) (property.getType()));
 2. SimpleType simpleType = ((SimpleType) property).getType();
他们做同样的事吗?
Roh*_*ain 10
他们做同样的事吗?
不,他们不是.
property.getType()来SimpleType.(调用在Casting之前完成)property来SimpleType,然后调用该getType()方法就可以了.(铸造之前进行调用).您也可以从括号的优先级中理解它.由于它具有最高优先级,因此将首先进行评估.
第一个案例: -
所以,在((SimpleType) (property.getType()));: -
(property.getType())
首先评估,然后执行铸造.事实上,你并不需要围绕它的括号.(比操作员property更严格地绑定到dot (.)操作cast员).因此,调用将始终在转换之前完成.除非你强制它反转,如下例所示: - 
第二种情况: -
在((SimpleType) property).getType(): -
((SimpleType) property)
首先进行评估,然后完成调用.因为,由于括号强制执行的优先级较高,因此现在您已将其括property在括号内,因此它更紧密地绑定到cast操作符.
他们正在做两件完全不相关的事情:第一件是评估结果,getType()第二件是向下转换property变量.考虑到左侧的类型,第一个看起来像您需要的那个.请注意,在第一个示例中,您有额外的括号,这就足够了,这是如何以惯用法编写的:
SimpleType simpleType = (SimpleType) property.getType();
| 归档时间: | 
 | 
| 查看次数: | 751 次 | 
| 最近记录: |