我的Java有点生疏,我正在学习Android。我从我正在阅读的书中遇到了这一特定的一行:
(Crime)(getListAdapter()).getItem(position).
根据我的理解,这会将返回的项目(Object
类型)从getItem()
转换为Crime
。这里的问题是为什么(getListAdapter())
括在括号中?这个表达有意义吗?这与(Crime)getListAdapter()。getItem(position)相同吗?我知道这不仅仅是Java,但是当我遇到这个时,我感到很困惑。
此时我对这种表达式z = (x)(y).
谢谢!
答案 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类中的所有可用方法。