我注意到,有两种方法可以转换对象(不同之处在于外部括号的位置):

 1. SimpleType simpleType = ((SimpleType) (property.getType()));
 2. SimpleType simpleType = ((SimpleType) property).getType();

他们在做同样的事情吗?

最佳答案



否,但不是

  • 第一个是转换您从中返回的值property.getType()SimpleType。 (调用在转换之前完成)
  • 第二个是首先将property转换为SimpleType,然后
    然后在其上调用getType()方法。 (在调用之前完成类型转换)。


  • 您也可以从括号的开头理解它。由于它具有最高优先级,因此将首先对其进行评估。

    第一种情况:-

    因此,在((SimpleType) (property.getType()));中:-
    (property.getType())
    

    首先评估,然后进行类型转换。实际上,您实际上并不需要括号。 (propertydot (.)运算符更紧密地绑定(bind)到cast运算符)。因此,调用将始终在强制转换之前完成。除非您在以下情况下强制将其反转:-

    第二种情况:-

    ((SimpleType) property).getType()中:-
    ((SimpleType) property)
    

    首先评估,然后完成调用。如此,现在您已经将property括在方括号内,由于括号强制使用更高的优先级,因此它与cast运算符的绑定(bind)更加紧密。

    09-11 19:21