2011-02-09 4 views
0

C++では、このチェーン対応構文は無効です。このjQueryの構文はJavaで有効ですか?

 builder.setMessage("Are you sure you want to exit?") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        act.finish(); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 
+0

あなたはそれが無効なC++だと思いますか? – SLaks

+0

はい、オブジェクトを返すと、このchinableコードが機能します。私はこれがVBでの 'with'のような多重メソッド呼び出しだと思っていました。 – lovespring

答えて

4

メソッドが同じオブジェクトを返す限り、正常に動作します。

匿名の内部クラスを除いて、C++でも動作します。 (C++はC++ 0xまでサポートしていません)
しかし、C++では、ポインタを返して->演算子を使用する方がパフォーマンスが向上します。

+1

はい、これは問題のクラスに完全に依存します。それは有効なC++またはJavaである可能性があり、無効である可能性があります。これは言語に依存する問題ではありません。あなたのすべてのビルダーメソッドが 'public builder setMessage(String)'のようなシグネチャを持っていて、 'return this;'を実行した場合、これは意図した効果を持ちます。 – ZoFreX

+1

@ ZoFreX:だから私は、あなたのメソッドが同じオブジェクトを返す限り、_と言ったのです。彼は構文について尋ねています。 – SLaks

+0

はい、私は彼が何をしなければならないかを明確にしたかっただけです。 – ZoFreX

1

あなたのセッターが何を返すのですか?彼らがvoidを返す場合は、あなたは明らかに何かをもう一度呼び出すことはできません。彼らが変更されたオブジェクトを返す場合、それは有効です。

関連する問題