void testK(ArrayList list) {
for (int y= list.size() ; y > 0 ; y-- ) {
Kostka kst = list.get(y -1);
}}
当我尝试编译此代码时,它表示(y -1)
(第3行)不兼容
list.size()
方法应该返回一个整数,那么问题是什么?答案 0 :(得分:10)
您为传递的ArrayList
使用了raw type,因此您需要投射
Kostka kst = (Kostka) list.get(y -1);
但最好使用泛型来避免投射
ArrayList<Kostka> list
答案 1 :(得分:7)
您必须将list.get()
的结果投射到您的类型
Kostka kst = (Kostka)list.get(y -1);
或使用泛型并为您的方法提供通用列表
void testK(ArrayList<Kostka> list)
答案 2 :(得分:1)
在您编写代码的方式中,get(y - 1)
将返回Object
个实例。
你必须施展它:
Kostka kst = (Kostka) list.get(y -1);
另外,请避免使用ArrayList
等原始类型。而是使用通用集合(ArrayList<Kostka>
)
答案 3 :(得分:1)
首先,我建议您对ArrayList
使用泛型。
喜欢
void testK(ArrayList<Kostka> list) {
for (int y= list.size() ; y > 0 ; y-- ) {
Kostka kst = list.get(y -1);
}}
或者您需要将从列表中获取的对象强制转换为类型Kostka
void testK(ArrayList list) {
for (int y= list.size() ; y > 0 ; y-- ) {
Kostka kst = (Kostka)list.get(y -1);
}}
答案 4 :(得分:0)
增强提示:将-1
放在循环的开头,这样就可以避免循环中的list.size()
次删除。如果可能,请保留Koska ksk
最终。
for (int y = list.size() - 1; y > 0; y--) {
final Kostka kst = list.get(y);
}