java - 关于类型转换对象支架的问题

标签 java object casting

我注意到有两种方式来转换对象(区别在于外括号的位置):

 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())

首先被评估,然后执行转换。事实上,你真的不需要括号。 (propertydot (.) 运算符的绑定(bind)比 cast 运算符更紧密)。因此,调用总是在转换之前完成。除非你强制它反转,如下例所示:-

第二种情况:-

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

((SimpleType) property)

首先被评估,然后调用完成。因为,现在您已将 property 括在方括号内,由于 binds 运算符更紧密,因为 cast 执行了更高的优先级em>括号

关于java - 关于类型转换对象支架的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581353/

相关文章:

java - 使用属性值设置 Maven 父版本?

java - Android Studio 中的分数计数器错误

javascript - 从对象内部的对象中删除键

c++ - 一个类的另一个类的 friend 的功能

c++ - 在不相关的全等类之间进行转换

Java 字符串到字节的转换是不同的

java - 如何将 jdbc 查询的结果存储为关系以便在下一个查询中使用它

python - 如何比较 python 自定义类中 None 对象的相等性?

c# - 如何扩展 LINQ-to-SQL 类而不必在每次生成代码时都进行更改?

php - 如何正确解析 PHP 中的整数?