2016-05-14 3 views
2

Ich bemerkte den generierten Code in meinem Android-Projekt die folgende Technik verwenden, um mehrere Aktionen auf die Snackbar anzuwenden:Kann ich mehrere Aktionen auf elegantere Weise an einer Komponente vornehmen?

fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Send message", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
    }); 

scheinen diese nicht auf einem regulären Java-Swing-Projekt zu arbeiten:

for(int i = 0; i < 6; i++) 
     ((JButton) toolBar.getComponent(i)).setText(null) 
              .setIcon(new ImageIcon(iconPath[i])); 

, die den folgenden Compiler-Fehler erzeugt:

error: void cannot be dereferenced 
     .setIcon(new ImageIcon(iconPath[i]));} 
    ^

Meine Lösung ist folgende einfach tun:

Meine Frage ist: Fehle ich etwas oder funktioniert es nur in Android-Projekten und in diesem Fall, warum?

Antwort

0

Es geht nicht um Android oder nicht. Es geht um den Rückgabetyp der Methode. Die von Snackbar in Ihrem Beispiel verwendete Technik heißt Method Chaining.

Es ist also eine Designentscheidung, die von anderen getroffen wurde, die die von Ihnen verwendeten Klassen implementiert haben. Es ist keine Sprachfunktion oder etwas ähnliches.

+0

Okay, also da ich JButton-Klasse verwende, kann ich Methodenverkettung nicht verwenden und muss mich auf die Lösung verlassen, die ich oben gepostet habe? – bhuzse

+0

Kurz und einfach: Ja. :) –

Verwandte Themen