gpt4 book ai didi

java - 多次类型转换

转载 作者:行者123 更新时间:2023-12-01 17:54:56 24 4
gpt4 key购买 nike

我正在尝试理解今天遇到的这行代码:

(int[])((int[])((Object[])((Object[])this.mapping.get(index)))[0])

其中mapping是一个 vector 。

当假设条目的类型为 int[] 时,可以简单地完成 (int[])this.mapping.get(index) ,似乎有多余的转换和从 Object[] 到 int[] 的不必要的转换。谁能向我解释为什么需要上面的表达式?谢谢

最佳答案

由于所有这些括号都难以阅读,因此这里有一个匹配:

(int[])((int[])((Object[])((Object[])this.mapping.get(index)))[0])
│ │││ │││ │││ │ │ │││ │
└─────┘│└─────┘│└────────┘│└────────┘ └─────┘││ │
│ │ └─────────────────────────────────┘│ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘

分解,显示评估顺序:

                                     this
.mapping
index
.get( )
((Object[]) )
((Object[]) )
[0]
((int[]) )
(int[])

如您所见,第二个 Object[] 都是 Actor 阵容和第二个int[] Actor 阵容是多余的。

代码可以简化为:

(int[]) ((Object[]) this.mapping.get(index))[0]

或者更简单:

((int[][]) this.mapping.get(index))[0]

如果 mapping 就更好了被声明为 Vector<int[][]> ,代码将很简单:

this.mapping.get(index)[0]

关于java - 多次类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45871506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com