我注意到有两种方式来转换对象(区别在于外括号的位置):
1. SimpleType simpleType = ((SimpleType) (property.getType()));
2. SimpleType simpleType = ((SimpleType) property).getType();
他们在做同样的事情吗?
最佳答案
Are they doing the same thing ?
不他们不是。
- 第一个是转换你从
property.getType()
到SimpleType
。 (调用在转换之前完成) - 第二个是首先将您的
property
转换为SimpleType
并且 然后在其上调用getType()
方法。 (转换 在调用 之前完成)。
也可以从括号的优先级来理解。由于它具有最高优先级,因此将首先对其进行评估。
第一种情况:-
因此,在 ((SimpleType) (property.getType()));
中:-
(property.getType())
首先被评估,然后执行转换。事实上,你真的不需要括号。 (property
与 dot (.)
运算符的绑定(bind)比 cast
运算符更紧密)。因此,调用总是在转换之前完成。除非你强制它反转,如下例所示:-
第二种情况:-
在 ((SimpleType) property).getType()
中:-
((SimpleType) property)
首先被评估,然后调用完成。因为,现在您已将 property
括在方括号内,由于 binds 运算符更紧密,因为 cast
执行了更高的优先级em>括号。
关于java - 关于类型转换对象支架的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581353/