2013-05-16 6 views
5

Kann jemand erklären, wie dieser Codeausschnitt funktioniert ... Der eigentliche Code selbst ist nicht relevant, wie es von einem kurzen Tutorial über die Verwendung eines MVP-Pattern für Android war.Ist dies eine innere Klasse

Meine Hauptfrage ist, wie diese Code-Struktur funktioniert und ob dies eine innere Klasse ist, oder eine Transaktion. Ich habe eine Code-Struktur wie diese in Java nicht gesehen und möchte dies gerne untertiteln lernen Sie davon, wie es effizient und minimal erscheint.

public void loadCustomer(int id) { 
    (mCustomerModel.load(id)) { 
     mCustomerView.setId(mCustomerModel.getId()); 
     mCustomerView.setFirstName(mCustomerModel.getFirstName()); 
     mCustomerView.setLastName(mCustomerModel.getLastName()); 
    } 
} 
+0

Es ist mehr von Organisationsstil, können Sie die geschweiften Klammern perfekt überspringen. – Alex

+0

seine drei Methodenaufrufe in einem anderen Methodenaufruf, der mich verwirrt ... innerhalb einer Reihe von Klammern vom ersten Methodenaufruf. Bin ich dumm ... :-) – leeb898

+1

@ leeb898 nein ';' nach '(mCustomerModel.load (id))'? – assylias

Antwort

-2

Dies ist gerade nach vorne, scheint aber sicherlich etwas ungewöhnlich. Die runden Klammern, die mCustomerModel.load (id) umgeben, sind überflüssig, und in diesem Fall sind auch die geschweiften Klammern um die nächsten drei Zeilen überflüssig. Wenn in einem anderen Fall eine lokale Variable innerhalb dieses Blocks deklariert worden wäre, wäre ihr Gültigkeitsbereich auf diesen Block beschränkt. Der folgende Code ist gleichwertig:

public void loadCustomer(int id) { 
    mCustomerModel.load(id); 
    mCustomerView.setId(mCustomerModel.getId()); 
    mCustomerView.setFirstName(mCustomerModel.getFirstName()); 
    mCustomerView.setLastName(mCustomerModel.getLastName()); 

} 

EDIT: Verpasste die Absicht, dass die Zeile in runden Klammern eine if-Anweisung sein sollte. In diesem Fall ist der Code ziemlich selbsterklärend, sobald "if" hinzugefügt wurde.

+3

Dies kompiliert nicht (fehlende ';') – assylias

+0

Wenn Sie das Gefühl haben, dass Sie die Frage falsch interpretiert haben, können Sie einfach Ihre Antwort löschen (Link unter der Antwort). – assylias

+0

@Monty Goodepuppee Ich verstehe jetzt, mit der If-Anweisung macht es Sinn und ohne es ist nur Organisationsstruktur zu den Methodenaufrufen. – leeb898

-3

EDIT: Es sollte sein eine if Aussage vor (mCustomerModel.load(id)), und das ist, was meine Antwort annimmt.

public void loadCustomer(int id) { 
    (mCustomerModel.load(id)) { 

mCustomerModel.load(id) prüft wahrscheinlich, wenn ein Kunde ID gültig ist, und wenn es ist, bereitet die Kundendaten zugegriffen/modifiziert werden.

 mCustomerView.setId(mCustomerModel.getId()); 

erhalten Sie die ID des Kunden, und setzte es in der mCustomerView, was wahrscheinlich ein GUI-Element, das die Daten anzeigt.

 mCustomerView.setFirstName(mCustomerModel.getFirstName()); 
     mCustomerView.setLastName(mCustomerModel.getLastName()); 

tun das gleiche für den Vor- und Nachnamen des Kunden (in der GUI angezeigt werden)

} 
} 
+2

Es gibt keine 'if' Aussage. – dlev

+0

@ dlev, wow. Wie habe ich das vermisst? – BLuFeNiX

+0

Um fair zu sein, denke ich, dass es eine 'if' Aussage geben sollte, und der Rest Ihrer Erklärung ist korrekt. – dlev