Java: Anonyme innere Klasse verwenden eine lokale variable

Wie bekomme ich den Wert von userId übergeben, um diese Methode in meine anonyme innere Unterklasse hier?

public void doStuff(String userID) {
    doOtherStuff(userID, new SuccessDelegate() {
        @Override
        public void onSuccess() {
            Log.e(TAG, "Called delegate!!!! "+ userID);
        }
    });
}

Bekomme ich diesen Fehler:

Kann nicht beziehen sich auf eine nicht-Finale variable userID innerhalb einer inneren Klasse definiert, in eine andere Methode

Ich bin mir ziemlich sicher, ich kann nicht zuordnen, es als final, da es eine variable mit einem unbekannten Wert. Ich hatte gehört, dass diese syntax wird beibehalten, Umfang, so dass ich denke, es muss einen syntax-trick, ich weiß nicht ganz, noch nicht.

  • schade, java erfordert Finale hier. es ist offensichtlich, compiler, dass die lokalen Variablen nicht geändert, es sollte nicht Fragen, coder, um zu bestätigen, dass. im Falle der anon-Klasse schreibt die lokale variable, die ein kompilieren Warnung genug. bad bad-design-Wahl.
  • möglich, Duplikat der Warum sind nur final Variablen zugänglich in der anonymen Klasse?
InformationsquelleAutor Alex Wayne | 2010-07-14
Schreibe einen Kommentar