Java - “for-loop” - 不兼容的类型

时间:2013-06-13 13:00:13

标签: java for-loop arraylist

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

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

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

5 个答案:

答案 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);
}