6
votes

Comment appeler la fonction avec rappels à Java comme je le fais dans C #?

Je suis plutôt nouveau à Java, mais je dois écrire quelque chose comme ce code C # (c'est un prototype dactylographié à la main pour illustrer ce dont j'ai besoin) xxx

peu d'explication. J'utilise asynctack dans Android et appelant un processeur extérieur classé, mais j'aimerais que cela puisse signaler afin que je puisse publicationProgress . Je préfère ne pas mettre l'interface sur mon asyncktask


1 commentaires

Dupliqué possible de Fonctions de rappel en Java


4 Réponses :


4
votes

à l'aide d'une classe de support: xxx

Je ne vais pas vous suggérer d'utiliser des cours anonymes parce que je les trouve assez verbeux jusqu'à ce qu'une syntaxe slicker ne soit pas disponible mais C'est juste une question de goût personnel, je finis à perdre mon auto entre les accolades lorsque je les utilise ..


0 commentaires

5
votes

en Java, vous utilisez des classes anonymes implémentant des interfaces. Ceci est un peu plus sévère, mais cela fonctionne simplement bien:

interface MyAction {
    void doit(String str);
}

class WorkerClass {
    void doWork(MyAction action);
}

void main(String args[]) {
    WorkerClass worker = new WorkerClass();
    worker.doWork(new MyAction {
        public void doit(String e) {
            System.out.println("Progress" + e)
        }
    });
}


1 commentaires

@ Fr.fouad oups, j'ai codé en C # depuis trop longtemps :) merci!



6
votes

Les fermetures ne sont pas encore prises en charge, vous devez utiliser une classe interface et une classe intérieure anonyme. xxx


0 commentaires

0
votes

Il est possible avec Java 8. Voir ma réponse à la question en double:

https://stackoverflow.com/a / 26776520/1206998

Utilisez une fonction comme argument: xxx

appel xxx / p>


0 commentaires