インナークラスのコールバックメソッドで得られる値をreturnする為に以下のような形で書いてみたのですが、不自然でしょうか?

boolean b;
int field;
int メソッド(){
インナークラス{
コールバックメソッド(int value){
field=value;
b=true;
}
}
while(!b)
 b=false; 
return field;
}

一応問題なく動いてますが、正攻法ではない気がして不安です。