这是如何评估的? (刑事)(getListAdapter())。的getItem(位置)

时间:2015-01-11 22:19:26

标签: java android

我的Java有点生疏,我正在学习Android。我从我正在阅读的书中遇到了这一特定的一行:

(Crime)(getListAdapter()).getItem(position).

根据我的理解,这会将返回的项目(Object类型)从getItem()转换为Crime。这里的问题是为什么(getListAdapter())括在括号中?这个表达有意义吗?这与(Crime)getListAdapter()。getItem(position)相同吗?我知道这不仅仅是Java,但是当我遇到这个时,我感到很困惑。

此时我对这种表达式z = (x)(y).

的语义感到困惑

谢谢!

2 个答案:

答案 0 :(得分:2)

它用于在不启动新表达式的情况下完成强制转换。这允许getItem(position)的后续表达式位于Crime上。它等同于

Crime c = (Crime) getListAdapter(); // <-- parenthesis not needed
c.getItem(position); // <--  on the Crime

答案 1 :(得分:1)

(Crime)(getListAdapter()).getItem(position)(Crime) getListAdapter().getItem(position)

相同

但是如果在Crime类中定义getItem方法并且getListAdapter()返回的类型是java.lang.Object,则此代码将无法编译。事实上,getListAdapter()后面的点可以访问java.lang.Object中仅提供的所有方法。

也许这一行是错的,作者想写:((Crime)getListAdapter()).getItem(position)

在这种情况下,((Crime)getListAdapter())后面的任何点都可以访问Crime类中的所有可用方法。