お世話になっています。
以下のような拡張for文なのですが、
returnでメソッドを終了してくれません。
java
1private EntityA get(List<EntityA> entitylist, Long id){ 2 3for (EntityA entity: entitylist){ 4 if(entity.getId()==id){ 5 return entity; 6 } 7} 8 return null; 9} 10 11//使用側 12EntityA entity = get(list, id); 13if(entity ==null){ 14 entity=getDb(id); 15 list.add(entity); 16}
代わりにbreakで試してみましたがやはりfor文を抜けませんでした。
ステップ実行で実際にreturnまでカーソルが移動することを確認していますが、for文は抜けないので結局nullが返ります。
return , break が効かない場合はあるのでしょうか?
[追記]
return null;の位置は誤記ですので修正しました。すみません。
return entity;の前で
printlnを試したところ、ログは出力されていませんでした。ただし、entity.getId()とidの中身もツールチップで出力してみたのですが、一致していることは確認しています。(ステップ実行でprintlnを通過しているが実際にはログは出力されていないということです。)
for文を抜けないというのは、
ifで条件一致しても中の処理が実行されず、結局要素数分ループが行われ、nullが返るという意味です。
[追記2]
for文の直後ではログは出力されています。
ステップ実行の環境はeclipse3.7です。
arrayListのループではなくHashMapのcontainsKeyに変更したところ(メソッドの戻り値も変更)うまく動作しました。
回答5件
あなたの回答
tips
プレビュー