この質問には2つの部分があります。コールバックwith java 8
パート1:私はコールバックが必要な理由に完全に明確ではないよ
、なぜ単にオブジェクトを渡すと、例えばコードCに見られるように、メソッドを呼び出すのではなく、インタフェースを作成し、通過しません例えば、コードA、またはB
パート2のように、その中:
ベローズを所定の3つの例示コードの違いは何であり、AとBとの間の差はありますか?パフォーマンスと優れたプラクティスのどちらが最適なのか、またパフォーマンスの向上をもたらすボンネットの下で起こっていること、つまり実用性の面で別のものを使用するのがベストなのはなぜですか。
のコード例A:
interface Iexample{
void foo();
}
public class Roo implements Iexample{
public void foo(){
System.out.println("hello");
}
}
public class Too{
public void eoo(Iexample callback){
callback.foo();
}
public static void main(String[] args){
Roo roo = new Roo();
Too too = new Too();
too.eoo(roo::foo);
}
}
サンプルコードB(本体のみが異なる):
interface Iexample{
void foo();
}
public class Roo implements Iexample{
public void foo(){
System.out.println("hello");
}
}
public class Too{
public void eoo(Iexample callback){
callback.foo();
}
public static void main(String[] args){
Roo roo = new Roo();
Too too = new Too();
too.eoo(roo);
}
}
コード例C
public class Roo {
public void foo(){
System.out.println("hello");
}
}
public class Too{
public void eoo(Roo callback){
callback.foo();
}
public static void main(String[] args){
Roo roo = new Roo();
Too too = new Too();
too.eoo(roo);
}
}
編集:誰でもなぜ説明する気にdownvotingですか?私が...例Aで、あなたのRoo
クラスがIexample
を実装する必要がないことを
なぜ私はあなたがインターフェイスを実装する必要があるコールバックを使用するのかと尋ねています。私が3つすべてで示したように、先ほどやったときに別のオブジェクトにオブジェクトを渡すことができますのコード例。最初の1つは、インターフェイス(とJava 8のメソッド参照)を使用し、2番目は同じですが、オブジェクトを渡します.3番目はインタフェースをまったく使用しません。あなたが完全にそれを避けることができるとき、なぜコールバックを使うのですか?明らかに私は何かを理解していないので、その違いが何であるか尋ねていたのです。私は例を挙げた。 – James
申し訳ありません - あなたの言葉通り、第1部の内容を理解するために第2部を読んでいたことは明らかではありませんでした。それは本当に二部構成の質問ではありません。 – ajb
私は2つの部分は、全体の質問に2つの部分があることを意味したとき、私はそれを分割すると対処しやすくなると思った。私はそれをもっと明確にしておくべきだった。 – James