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!”); } } }