【问题标题】:Java - "for-loop" - incompatible typesJava - “for-loop” - 不兼容的类型
【发布时间】:2013-06-13 13:00:13
【问题描述】:
void testK(ArrayList list) {
        for (int y= list.size() ; y > 0 ; y-- ) {
            Kostka kst = list.get(y -1); 
        }}

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

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

【问题讨论】:

  • 请发布完整的堆栈跟踪。
  • 你的ArrayList是什么类型的?应该是ArrayList<Kostka> list
  • @Doorknob 他说编译器错误
  • 好的,那么请发布完整的错误。

标签: java for-loop arraylist


【解决方案1】:

您使用 raw type 来传递传入的 ArrayList,因此您需要强制转换

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

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

ArrayList<Kostka> list

【讨论】:

    【解决方案2】:

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

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

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

    void testK(ArrayList<Kostka> list)
    

    【讨论】:

      【解决方案3】:

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

      你必须投射它:

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

      另外,避免使用像ArrayList 这样的原始类型。相反,请使用通用集合 (ArrayList&lt;Kostka&gt;)

      【讨论】:

        【解决方案4】:

        首先我建议您对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); 
                }}
        

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-29
            • 1970-01-01
            • 2015-09-25
            • 2016-04-12
            相关资源
            最近更新 更多