2011-02-09 3 views
0

C++에서이 체인 가능 구문은 유효하지 않습니다.Java에서 유효 한 구문과 같은 jQuery입니까?

 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

예, 객체를 반환하면이 턱받이가 가능한 코드가 작동합니다. VB에서 'with'와 같이 곱셈 메서드 호출이라고 생각했습니다. – lovespring

답변

4

메서드가 동일한 개체를 반환하면 정상적으로 작동합니다.

익명의 내부 클래스를 제외하고는 C++에서도 작동합니다. (C++은 C++ 0x까지 지원하지 않습니다)
그러나 C++에서는 포인터를 반환하고 -> 연산자를 사용하는 것이 더 효과적입니다.

+1

예, 이는 전적으로 해당 클래스에 따라 다릅니다. 유효한 C++ 또는 Java 일 수 있으며 유효하지 않을 수 있습니다. 이는 언어에 따른 문제가 아닙니다. 모든 빌더 메소드가'public builder setMessage (String)'과 같은 서명을 가지고'return this; '하면 의도 한 효과가 있습니다. – ZoFreX

+1

@ ZoFreX : 그래서 내가 말했듯이, 당신의 메소드가 같은 object를 반환한다면 _. 그는 구문에 대해 묻고 있습니다. – SLaks

+0

예, 방금 그가해야 할 일을 명확히하고 싶었습니다. – ZoFreX

1

세터가 무엇을 반환하는지 궁금합니다. 그들이 void을 반환하면 분명히 그걸 다시 호출 할 수 없습니다. 그들이 변경된 오브젝트를 리턴하면 유효합니다.