Red > Green > Refactor > Red

cycle is based on desire

for-each の骨組み作っただけで Required Found のコンパイルエラー出た時

ループ変数、ループされる変数 のクラスに食い違いがないか確かめる

————————

自戒用に書き残し

import java.util.List;
import org.apache.commons.beanutils.DynaBean;

public class Test {
  public void testMethod(List<DynaBean> resource) {
    for(List<DynaBean> list : resource) { // << ココでコンパイルエラーになる
      System.out.println(“record!”);
    }
  }
}

コンパイルすると下のようなエラーが出てくるはず

Incompatible Types.
Required: java.util.List<org.apache.commons.beanutils.DynaBean
 >
Found: org.apache.commons.beanutils.DynaBean

ループされる変数(resource)の期待クラス

java.util.List<DynaBean>

ループされる変数(resource)の検証クラス

orig.apache.common.beanutils.DynaBean

どっちが間違い?(実検証)

ループされる変数(resource)のクラスはコンパイル時点で間違い無し

→ ループ変数(list) は正しい?

→ ループされる変数(resource) のクラス(DynaBean) と不整合起こしている(→ java.util.List)

→ ループ変数(list) のクラス(java.util.List) が間違い

修正

import java.util.List;
import org.apache.commons.beanutils.DynaBean;

public class Test {
  public void testMethod(List<DynaBean> resource) {
    for(DynaBean list : resource) {
      System.out.println(“record!”);
    }
  }
}