1
void testK(ArrayList list) {
        for (int y= list.size() ; y > 0 ; y-- ) {
            Kostka kst = list.get(y -1); 
        }}

当我尝试编译此代码时,它说(y -1)(第 3 行)不兼容

  • 但是该list.size()方法应该返回一个整数,那么问题是什么?
4

5 回答 5

10

您正在使用原始类型作为ArrayList传入的,因此您需要强制转换

Kostka kst = (Kostka) list.get(y -1); 

但最好使用泛型来避免强制转换

ArrayList<Kostka> list
于 2013-06-13T13:02:19.067 回答
7

您要么必须将结果list.get()转换为您的类型

Kostka kst = (Kostka)list.get(y -1);

或使用泛型并为您的方法提供通用列表

void testK(ArrayList<Kostka> list)
于 2013-06-13T13:02:29.570 回答
1

以您编写代码的方式,get(y - 1)将返回一个Object实例。

你必须投它:

Kostka kst = (Kostka) list.get(y -1); 

此外,避免使用原始类型,如ArrayList. 相反,使用通用集合 ( ArrayList<Kostka>)

于 2013-06-13T13:02:49.703 回答
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); 
        }}
于 2013-06-13T13:03:04.417 回答
0

增强提示:将-1a 放在循环的开头,这样可以避免循环list.size()中的减法。如果可能,请保留finalKoska ksk

for (int y = list.size() - 1; y > 0; y--) {
    final Kostka kst = list.get(y);
}
于 2013-06-13T13:10:47.173 回答